- Don't look at the eventual goal - it's discouraging to see the long road you have to travel to get there. Instead, focus on the little things you can do now, and make doing those things your intermediate goals.
- Work in short (30 - 45 minutes) bursts. Planning long marathons only makes starting work that much more difficult.
- I keep a small TTD text file ala GTD style to get things off my mind. I usually finish most of the things I put in there. The file contains micro-items that need to be done.
- Focus on getting to the "starting ritual". If I have to work on a website, for example, I just focus on starting the IDE first.
- Start delivering whatever portions of the project you have completed thus far. Don't worry too much about the quality of your work. Instead, simply claim that the work's in its draft or beta stage.
- Have a personal blog, and log every day the work you have put in towards your goals. If you didn't do anything on a day, log that. This is also a great place for you to play your own coach.
- Don't torment yourself over past lapses. Just resolve to start from this moment on.
- Look at your past accomplishments, and affirm yourself of your ability to deliver.
All that being said, the fundamental problem here is putting up with an immediate unpleasantness in return for a potential future reward. If you cannot see a reward clearly, then obviously there's not much point fretting over procrastinating. Just enjoy your present moment!
I also think it might be useful to have an overarching sense of mission - some grand theme - to add an element of urgency that'll keep you going.