First of all, stop beating yourself up about it. Strong willpower is the exception rather than the rule otherwise there would be no drunks, no addicts, no obese people etc...
It depends what your particular problem is but there are several things you could do:
- Learn to limit yourself. For instance, if you are overeating/drinking/smoking don't buy or buy limited quantities.
- Alter your environment. This is a big one and usually the cause of lack of willpower. If you spend your time in pubs, you will inevitably drink too much. Try other venues of entertainment.
- Change your life pattern. Sometimes, it takes only a little tweaking to make a big difference. Most smokers are addicted to the pattern of smoking, i.e. break + coffee = cigarette. By removing all or part of the pattern, willpower re-establishes itself.
- Learn to say "no" and choose your friends carefully. If your willpower is weak you will be more easily influenced than average by your peers so it's very important not to frequent "toxic" friends who are using you to justify their own lack of willpower. Join a new and more supportive group.
- Focus on other things. Learn something new.
- Think positive thoughts and pat yourself on the back every time you have shown greater willpower.
- Make a list of what you want to achieve at the beginning of the day and stick to it. It will give you a great sense of achievement.
Finally, the occasional weakness is what makes us human!