Things that have helped me overall are therapy and meditation. But I also struggle with feeling extremely self-critical. My mother started commenting about my eating/weight/body when I was seven years old. It degenerated into enforced diets and ridicule. I was anorexic by the time I started college. I was overweight by the end of it (which I figure is way better than dead). Nothing but time and therapy have helped me identify the messages that were imposed on me, but that doesn't always help with the day-to-day battle. I'm pretty comfortable with myself now, and take much better care of my health than I used to, but self-acceptance has yet to come easily for me.
I've found having a mantra (or affermation) helps me identify that the inner nmother is the one talking and not the inner me. My mantra is "I will not engage." I figure, you don't enter into a logical discussion with a screaming 2 year old, and you certainly don't accept the "logic" view of an unhappy, destructive, narcissistic person. There's no point in arguing with either of those people, so you just don't engage in the conversation at all. When I recognize that voice, I just tell it, "I will not engage", take a couple deep breaths, and also try and become aware of my surroundings. Notice that birds are singing, or study the texture of the floor. Anything that slows down the inner yammering and brings me back to the present moment. It helps.
missm