I've since learned that I have to force myself to accept the "good enough" solution, to work in iterations, and to do timeboxing (I use the pomodoro method) so that I just get started on something, without worrying too much about the big picture. Most of all though, it really does come down to just mental discipline, to recognizing when you're putting something off (which itself can be difficult to a life-long procrastinator) and forcing yourself to just do it now. Sadly, like a recovering drug addict, I'm afraid it's something I'll always have to fight against.
Fantasizing about what it would like to have already finished my Great American Novel/Web Site/Open Source App gives me such a warm and comfortable glow that I am reluctant to spoil it by taking two steps into the project and looking around and saying "OMG this is total crap and I have no idea what to do next".
PS: And yeah, the pomodoro method rocks.
I find myself procrastinating at work because what I do for work isn't intellectually engaging, and with tasks that I want to work on for myself (like building my web site) I get hung up on details and make no progress.
Learning to set smaller milestones has helped with the latter, but the former is something I'm stuck with for the moment. My web site is a step to escaping from that grind, but it's going to take time... so I'm taking advantage of the fact that my job isn't sufficiently challenging to require much thought, and therefore saving my energy for things that actually matter, which is everything else. :)
I don't procrastinate because I don't care, I procrastinate because there are multiple things I care about. A few of those happens to be playing games, reading hacker news, having a god awful many feeds in my newsreader, drinking beer and having more then one project at any time. Although I have the personality type that does things at the end of a deadline and I know people who aren't like that think of us as lazy and unstructured but it's not like that at all. I found this to be extremely insightful once: http://www.structuredprocrastination.com/
I also doubt there are many (if any) that has a job that's interesting all the time. :)
Of course, this argument is invalid if you're able to focus on the ultimate reward, rather than the task at hand, but I just find that leads to more procrastination.
One personal trait I admire (and don't have) is the ability to just pull yourself together and get an unpleasant task done. This wins many friends and much social capital.
For example currently I'm working on a side project that I'm procrastinating badly on -- the work is tedious and uninteresting. But I need the project to help pay for home renovations that are important to me. I could do the renovations myself (and I've done it before) but you see I can make 2x or more money per hour than I'd pay a skilled professional to work on my house. In the end, while I appreciate your advice it is only applicable for career decisions.
Just who is going to pay me to work on a Free and non-Unixlike operating system? You?
if you procrastinate you are working on things you don't care. And if you are in this condition the procrastination is the minor of your trouble, you are wasting your professional life. So... switch to something you really care, and for you to procrastinate will be to work on your things, because they are really interesting to you.