If you realize your faults or problems there is always a step you can take to better yourself. It's not easy and may not be a perfect solution but if you are determined enough you can change anything about yourself.

Also, give yourself time. As you say you didnt just turn into this person you hate overnight so obviously you can't expect to change it that fast either it just won't happen. try setting small goals for yourself and gradually build on them. if you can keep it up you will slowly change.