Dresden_P is quite right - WASTING markup on a clear is just bad practice and outdated coding... to be filed alongside other clearing techniques like "clearfix" classes in the "outdated/outmoded/just plain wasteful" bin.
Also beware IE6- overflow:hidden doesn't work for float wrapping, but your width declaration trips something known as "haslayout" so IE will wrap the floats anyways. The only reason it works in IE7+ is they made overflow a haslayout trigger.
You may have noticed that in IE6 your original code did in fact wrap your floats... all because of that width:900px on #main -- this is an INCORRECT behavior, even when it is the desirable one.... if you still give a flying purple fish.
Honestly, I'm still a little shocked to see people recommending a clearing DIV; what is this, 2001? looks at all the new sites still being written as HTML 3.2 with a 4 tranny or 5 lip-service on it... my bad, I guess it's 1997