For example, I try to keep a couple of projects going on at the same time - I generally have a major release in development for our team's primary product at all times. This is my "main work".
I also have one or two smaller projects at some stage of design or development as well - perhaps a prototype to try show the business owners a cool new idea or some type of development or administration tool which would help support the primary project. Usually, I try to learn a new technology or language while solving a problem related to our business.
When I find myself become unproductive on my main work, I switch focus temporarily to one of the smaller projects. These projects tend to be personal (although work-related) and don't have fixed delivery dates. Without the pressure of a strict schedule or external expectations, I can more easily work on these projects and rediscover my ambition.
It usually doesn't take more than a day or so to get my motivation back and I return to working on my main project with my usual productivity.
Working like this seems natural to me, big explosive bouts of high productivity, churning out cool stuff, and then days of nothing. I think part of it is that the days of 'nothing' seem like nothing, when in reality they are often 'thinking' days, where you solve problems, but just don't happen to produce code.