And a great way to procrastinate from tackling the next leg of the project is to blog about it, post a link to that blog on hacker news, and then obsessively watch yourself bounce around the hacker news front page on a slow Saturday afternoon.
The single biggest thing that's helped me context switch between projects (or return to one) has been keeping a project log.<p>To me, a project log is to documentation as Twitter is to blogging--it requires little effort but over time provides useful pointers to where you were at the time.<p>Originally I used a "one way personal wiki" to keep track, like this: <a href="http://code.rancidbacon.com/ProjectLogArduinoUSB" rel="nofollow">http://code.rancidbacon.com/ProjectLogArduinoUSB</a><p>But when I lost the server it was on I decided to re-implement it on Google App Engine and make it available to other people, thus was born Labradoc, here's an example project log: <a href="http://www.labradoc.com/i/follower/p/project-sms-text-scroller" rel="nofollow">http://www.labradoc.com/i/follower/p/project-sms-text-scroll...</a><p>It's kinda a "commit log for your day".
I've always found that talking to people that actually use a project as an inspiration to keep working on things. That and find small ways to measure progress. Get something small and working out then iterate fast.