Z jednej strony CSS może wystarczyć. Z drugiej - pamiętaj także o wielkości strony jako takiej (kilobajty niepotrzebnego kodu - sio!), o odpowiedniej czytelności, o braku (ewentualnie głębokim upośledzeniu) JavaScriptu.
I przede wszystkim o tym, że @media handheld nie jest zbytnio respektowane i lepszym pomysłem jest strona mobilna w całkowicie nowej domenie (m.twitter.com, m.gazeta.pl, m.allegro.pl), a nie poleganie na automatyce. Zrezygnuj z automatycznego wykrywania przeglądarek mobilnych (ew. daj linki przekierowujące), nie każdą da się wykryć, a czasami użytkownik może chcieć zobaczyć pełną wersję strony.
Sam CSS może nie wystarczyć w niektórych wypadkach - co z tego, że zrobisz display: none na megabajtowym zdjęciu, skoro głupia przeglądarka i tak będzie to próbowała pobrać? A użytkownicy telefonów dość wyczuleni są na czas i na koszty. Tworząc strony dla urządzeń mobilnych skup się na treści, nie na jakichkolwiek ozdobnikach. Małe logo tu i ówdzie, a poza tym treść, treść, treść. Flash czy Silverlight na mobilnych praktycznie nie istnieje, więc i go być tam nie powinno.
Ciężko mi powiedzieć jak wygląda sprawa z reklamami na stronach mobilnych. Na odwiedzanych przeze mnie reklam nie ma (jeszcze?). Fajnie by było, gdyby taki stan rzeczy się utrzymał.