Prima di pensare al CSS, occorre pensare a creare un (X)HTML corretto anche semanticamente.
Se l'immagine fa parte del contenuto va inserita in un tag <img>; se invece e` abbellimento va inserita come sfondo.
Poi ci sono vari modi di gestire gli spazi.
Nei vari blocchi puoi definire anche un min-width (*): in tal caso gli oggetti float quando non ci stanno vanno a capo.
A quel punto e` importante inserire gli oggetti nell'ordine logico, in modo che vengano visualizzati in un ordine che abbia senso.
Riassumento: se la finestra e` sufficientemente larga, i blocchi vengono affiancati; quando diventa troppo stretta (eventualmente anche in funzione del carattere usato) i blocchi vengono messi uno sotto l'altro. E` un comportamento ragionevole, ed in molti casi atteso dai navigatori, per cui non comporta perdita di accessibilita`: i contenuti devono essere sempre visibili e accessibili, il layout puo` subire modifiche (l'estetica deve cedere il passo alla fruibilita`).
(*) se usi min-width, devi tener conto che in IE6 non viene riconosciuto; quindi devi usare l'hack opportuno: e` un hack che non pregiudica la visualizzazione in altri browser, compreso IE7, per cui puo` essere usato tranquillamente.