Ich vermute, du testest im IE? Schlechte Wahl, nimm lieber Firefox.
Der IE braucht:
html, body {height:100%}
Setz außerdem mit
* {margin:0; padding:0;} alle Default-Randabstände auf 0.
Warum positionierst du #main absolut?
Pixel und Prozentwerte mischen (so wie du es tust) kann nicht gutgehen. Pixelhöhe von #header + Prozenthöhe von #main erzeugt irgenwann doppelte Scrollleisten. Nicht schön.
Außerdem mischt du prozentuale Höhen und Breitenangaben mit padding/border/margin in Pixel.
Das Box-Modell ist dir bekannt?
Hier gibt's eine "100% + Rest"-Lösung:
http://www.xhtmlforum.de/viewtopic.php?t=4465
Grüße
fricca