Mi dispiace dirtelo, ma è IE che sbaglia facendoti vedere la pagina "bene".

Ci sono alcuni "errori di fondo" nel codice. Prima di tutto, ricordati che i box flottanti sono estratti dal normale flusso del documento e quindi non condizionano la disposizione dei box posizionati normalmente (in modo statico). In particolare, se un box contiene solo box flottanti e non ha altezza assegnata esplicitamente, tale box ha altezza nulla. Nel tuo caso, il box "frame" contiene un solo box posizionato staticamente che è "top". La sua altezza (che non è assegnata con height) è data perciò dall'altezza dell'unico box statico che contiene, ovvero "top". Ci sono 2 modi per ovviare all'inconveniente.

1. Rendi flottante anche il box "frame" (con float: left ad es.).

2. Migliore della precedente, aggiungi un tag vuoto (un
ad es.) subito prima di chiudere il box "frame". A questo tag assegni una classe (chiamiamola clear) con questa regola di stile:

codice:
br.clear {
clear: both;
}
Questo tag quindi "ripulisce" entrambi gli allineamenti a destra e a sinistra dei due box flottanti e lo fa all'interno del box "frame", ripristinando il normale flusso del documento. Questo fa in modo che, essendo il flusso ripristinato dentro il box "frame", la sua altezza sia influenzata da quella dei due elementi flottanti al suo interno. Inoltre, usando questa tecnica, risolvi un bug di Netscape 6 con i contenitori dei box flottanti.

Poi ho notato una cosa "pericolosa": nei due box flottanti, hai assegnato dei margini sullo stesso lato del float (margin-left e float: left in "main" e margin: 5px e float: right in "rightcontent"). IE soffre di u bug che raddoppia il margine impostato sullo stesso lato del float, quindi cerca di non impostare mai il margine corrispondente al lato del float di un box (o al limite, impostalo a 0).

Ricordati anche del box model errato di IE5...se imposti un box con larghezza 500px e padding di 2px, il box non sarà largo 504px (come dovrebbe) ma sempre 500px, riducendo la larghezza effettiva dei contenuti a 496px. Questo ovviamente solo su IE5 (e su IE6 quando lavora in quirks mode).

IE, che ovviamente usa "standard" tutti suoi, si comporta molto diversamente da come dovrebbe, ma ricorda sempre che se hai differenze tra una pagina vista in IE e in FF, al 99% è IE che sbaglia.