o matko, HTML rodem ze średniowiecza.
najpierw co konkretnie zrobiłeś źle:
fragment
</tr><tr><td colspan="2" class="menu_r" valign="top">
zmień na
</tr>
</table>
<table border="0" width="100%">
<tr>
<td colspan="2" class="menu_r" valign="top">
czemu? szerokość komórek w tabeli ustala pierwszy tr; w pierwszym (i kolejnym również) tr masz colspany, przez co niektóre przeglądarki mają problem z ustaleniem szerokości. Seamonkey sobie nie radzi, ale IE7 i FF3 nie ma problemów. po poprawce nowa tabelka ma prawidłowo zdefiniowane szerokości komórek i nie jest rozpychana do nieprawidłowych rozmiarów.
a teraz co według mnie zrobiłeś nie tak?
pisz w XHTML, nie HTML. nie używaj tagów do formatowania wyglądu strony (np. po co ten center?), jeśli to tylko możliwe to nie używaj atrybutów (valign, colspan, align itp) - od tego jest css. a już szczególnie nie używaj do tego tabelek. jak widzę zagnieżdżone w sobie tabelki, to mnie lekki szlag trafia. naucz się stosować div ze stylem float (albo position: absolute i left). ampersandy popraw na &, walidator nie będzie się pluł.
ogólnie źródło wygląda tak, jakbyś powklejał w kilka linijek kodu do html wygenerowanego przez jakiś edytor wysiwyg. jeśli chociaż trochę się szanujesz, to napisz cały layout od nowa w notatniku (albo jakimś innym edytorze nie-wysiwyg).
a masz mało błędów, bo używasz bardzo pobłażliwej walidacji html transitional. spróbuj xhtml strict... dobra, żart; xhtml transitional. będziesz miał co najmniej ze setkę błędów.
z tabelkami jest tak, że po jakimś czasie nie widać gdzie który kawałek której tabeli jest zdefiniowany, albo do czego się odnosi. tabelki źle się formatuje w kodzie źródłowym. jak zagnieździsz ze dwie albo trzy tabele w sobie, to nie widać kompletnie który tr/td jest od której tabelki. z praktyki wiem też, że poziom zagnieżdżenia tabelek w sobie wzrasta "sam z siebie", po kilku miesiącach pracy nad kodem powodując dużo lepsze problemy niż Twój.