A long time ago I learned a technique to break writer's block: type random characters, followed by random words, followed by words and sentences that start to make sense. The idea is to get your fingers used to typing, jump-start your brain, and maybe generate some good ideas along the way. As long as you delete all the goobledygook, and don't find yourself typing “all work and no play makes Jack a dull boy,” it's at worst harmless and may lead to good things. So when I have a writing project, that's the way I start.
I've also adopted this technique to programming: every morning I sit down at my home computer, pick one of my many unfinished projects, and spend an hour working on it. Whether I accomplish a lot or a little in that hour doesn't really matter; the goal is to flip a mental switch. Afterwards, I often find new ideas popping into my head on the drive to work (other drivers should be glad that I don't carry paper to write them down).
This hour every morning serves another purpose that's at least as important: it lets me actually create something. My workday is filled with answering the question “can we do this, and how much will it cost?” It's easy to forget the joy of actually making something: an article for my website, a blog entry, even a Java class that will never be seen by anyone else. All it takes is an hour each morning to remind me why I ended up in this career.