Sedona Method has some great insight with the problems you are talking about.
The gist of it is that you let go of the postative and negative mental/emotional/physical energy. You abhor your current behavior; the stronger the emphasis you put on it, the stronger it's opposite. When you feel the core of your compulsion, you can accept it, and let it go. Get ahold of the Sedona Method, I think it will help.