A brainstorm of some ideas. (Feel free to add your own in the comment section).
- Writing new, interesting code
- Not hunting down regression bugs
- Not repeating yourself
- Sharing work with others
- Learning new things
- Seeing your code just work
Certain methodologies, like Agile and TestDriven.Net are designed to fulfill many of these things. For example, by having sufficient unit test coverage, you minimize your regression bugs and get to focus more on new things.