I have forgotten all about this: Structured Procrastination. Combined with mini-milestones, this approach works very well for me.
Mini-milestones, for those unfamiliar with the term, are very small tasks with only two possible statuses - NOT DONE and DONE. There is no 80% Done, it is either finished or not finished. This means the tasks must be small and straight-forward. We break down projects into smaller and smaller sub-projects, modules, functions and tasks until we have small, easily finished to-do items.
Structured procrastination exploits these small tasks. Large to-do items are broken up into small tasks making it easy to switch projects. If I don't feel like doing Project A, there are several mini-milestones from Project B I can accomplish. Once I get bored, switch back to Project A or yet another Project C.