It's hard to be "on" all the time as a developer. Despite its engineering aspects, I find software development to be a fundamentally creative act, and creativity requires inspiration. Looking back on the times when I've felt in a slump, when I just couldn't get the energy to make the next big push I needed for whatever project I was working on, I came to a simple realization: I burn out when I'm not releasing.
For me, if I'm not releasing something new at a pace of about once a week, my creative fire is slowly fizzling out. It doesn't really matter what it is; it could be a new open source library, a great (and complete) feature for a product I'm working on, or even just an in-depth blog post. What I need from releasing is the release that it gives me: it gives me license to take a breath, feel satisfied, and let my brain tackle new problems.
If you're feeling burnt out, take a step back and think about something you can release this week. Then do it. If you're really burned out, make it something small, maybe even just a Tweeted gist of some interesting code. Release it, feel that satisfaction, and you might just find that you suddenly have the inspiration and energy you needed to get over your harder, more complicated challenges.
When you really think about it, agile development isn't simply a method for building better software with a tighter feedback loop. Fast iterations and constant releases also serve as an energizing force for a development team, a way to feel that at least something is finished. Perhaps this insight is nothing more than common knowledge, but I know that it's going to change the way I think about my schedule. It's not "what am I working on this week" but "what am I going to release this week". Maybe it'll help you, too.