hola
ramon, tu problema está en como flotas las cajas. No le estas asignando overflow:hidden; al contenedor de las cajas flotadas, ni tomas en cuenta el ancho de cada una de estas y del contenedor. Asimismo, #logo no tiene float y esta afuera de #top que debería ser el contenedor.
Yo siempre pongo el html en orden al flujo de documento (p.ej: si #logo aparece a la izquierda de #menu, entonces en el html escribo #logo y luego, en la línea de abajo, #menu. Puesto que el documento html se compone de arriba a abajo y de izquierda a derecha.) y uso solo float left para todas las cajas flotadas.
En
este link está explicado, nada más adaptalo a tu página.
Si, en cambio, no es tu idea usar float, debes tratar las cajas con posicionamiento absoluto.
Este enlace te aclarará la cuestión.
Saludos.