It's normal, and I wouldn't say you're a bad person; I would say you're a person who lacks discipline in that certain aspect of his life. We all have weaknesses. We like to make fun of each other on here for our weaknesses, because it's really easy to give someone shit for something you find easy.
The reality of it is, guilt is not a motivating emotion. Resentment, shame, hate, sadness, etc., none of these emotions alone are ever going to actually ever motivate you to do anything. They're meant to signal something is wrong, they're not there to correct the behavior in of itself.
If you notice that you feel bad and want to change, but notice you aren't, it means that the reward you're getting in this case outweighs the negative emotion you're experiencing. The feeling of doing the action has to feel worse than the good of the reward - and in your mind this would imply that you subconsciously feel like the reward outweighs the bad feeling you get.
Using food as an example (I don't personally struggle with this issue but I'll be using I/me pronouns), I can hate how I look and I can hate how food makes me feel. I want to eat healthier and I know objectively I should do better. I know what there is to do, but I can't do it. It's because the 'happy' chemicals I get from eating outweighs the self hatred I feel afterwards.
You fix this by forcing yourself to accept consequences for the said behavior. This is an actual thing I do, and it's going to sound goofy but it's just the example I can think of off of the top of my head - When I notice I'm speeding on the high way, I force myself to get behind a slow car in the slow lane. It's frustrating a little bit at first but it's taught me to quit speeding.
You need discipline for this to work, and I feel like you do have good discipline based off of your body images (the gym etc). You just need to use that discipline in other aspects of your life.
Weakness should be the motivating emotion. Weakness makes you vulnerable, and we should never want to seek weakness. If you know you're being weak and you're seeking comfort in that weakness, try and find a way to be uncomfortable with that.