I really enjoy these times and frequently find myself "in the zone" and time flies by. I can easily code for 5 hours without realizing any time has gone by at all. Experiencing flow like this is a lot of fun and working on my creative projects allow me to feel that directly and reliably.
At some point during the project I eventually hit a place of darkness where I cannot see through the tunnel to the other side or even see if there is another side to see through to. When I'm programming it might be after I've done everything I know how to do and now I have to implement some new functionality that I've never done before and some functionality I have no idea how to implement. Those are dark days when I discover the garage needs cleaning, my bike's chain needs to be oiled (again), and look! There's a Big Bang marathon on television!
But, after some angst and some downtime, I return to the task at hand and begin to tackle it. On my best days I am enthusiastic, optimistic, and look forward to learning something new. It's a challenge I embrace. On my worst days my head aches and I despair of ever getting it to work like I want it to.
The important thing for me to remember on my dark days is that I've been there before and all I can do is to keep making progress and trust that I will eventually see the light at the end of the tunnel -- and then it's all tedious details again. Joy!