Sometimes I work for 8 hours with almost no results. Sometimes, I can do much more in 3 hours.
Things that help me (examples from IC05 demo): write down a detailed, roughly prioretized task list. If I don’t write it down and keep tasks in my head, I often spend too much time polishing not-so-important features. With task list, I update it constantly; at the same time I get sort of ‘summary’ of remaining work.
Another one: really concentrate. Turn off music (for some reason I can’t work while music is playing… especially if the music is good, I start listening to it), close the doors, tell the child ‘go play with mom instead’ :), etc.
More: disconnect from the net while working :)