i am not sjure about 20+ hour spurts unless you include the most valuable time for coding: doing something away from any computer.. coding in you head. I think pg has written about it not too long ago.
For me, this coding in your head continues and gets re-forumlated, stored as pseudocode in my head until i can write down the full the implementation in one step.
This way i sometimes come to 48h+ of work (including dreaming of code;-) which is just 10percent pysical hacking at a keyboard.
/Toni
So usually i work in 20+ hour spurts, and that is when I get my best work done.