Yes i have and the singular thing that really helped me was a bit of self analysis.
Oh and self help, quite like counselling yourself.
Basically it goes back to the inner child in you. Were you criticized a lot as a child, think about it...for what reasons? How old were you. Try to find a link with what you are feeling now.
The next step is to ask yourself if you would, knowing what you know now, criticize another child the same way.
Then go back to yourself and connect with the child inside yourself, why are you giving your inner child a hard time, go easy.
Also remember that everyone is only ever doing the best they know how at the time, otherwise they would do better.
Don't berate the child inside you.
I know a great book, weather it would benefit you depends on weather you are ready.
Also i don't know what kind of person you are but when i did this for the first time i realised i was berating this little kid (inside me) who really didn't deserve it. It made me cry a hell of a lot but after i came to a realisation and it released a lot of guilt and self hatrid i had stored up inside for a long long time.
Anyway i'm putting myself out there a bit with saying all of this, i hope it is of some help to you, if not no worries.