Another approach is donating to a charity you despise. Some friends of mine use a mutual donation pact to get things done. Each sets a goal they need to accomplish by the end of the month, and hands the other a signed check for $50 for a charity or political campaign they hate. If they don't accomplish the goal, the other person drops the envelope in the mail.
It's very effective. :-X
For instance, stickK sets up its commitment contracts with the option to donate to an "anti-charity":
https://www.stickk.com/faq/charities/Commitment+Contracts
It also allows you to donate to fan clubs of sports teams you despise :)
It would be way more effective if you were donating straight to a competitor, or a political organization you do not support at all.