I had spent 2 days working a problem. It was tricky, lots of redirects, cookies set, how to unset them, and more. General campaign click through logging, but in a robust way using the existing infrastructure...
After 2 days my code was not getting any closer. The next morning I chopped wood, played with the kids, worked up in the shed... During the morning I spent time in my head working on how to redesign the code. I went through many iterations, all while getting things done around the house.
In the afternoon, I wrote and finished, and tested the code in about 3 hours.
Traditionally, working for big corporation, or even small company, I would have to work specific hours, or charge per small time interval (5 minutes, maybe 30 minutes).
When I can, I have found that spending a morning doing something other than coding, but thinking about the problem, often shortens my development by significant amounts.
But how do you charge? How do I say to my customer - I spent the day building my new deck and did 3 hours for you in the afternoon. I know that spending the traditional way it would have taken me 2 days instead of 1.
Generally I charge only the work I do, but I do it in large chunks. A half day is about as small as I like to go. During that half day, which is probably closer to 5 full hours, not 3.75 or what ever half of an average day is, I might spend some time making coffee, others putting wood on the fire, or even grabbing a snack, but I am working during those hours. The other hours my customers get for free. But I won't charge the exact minutes I work.