y si en vez de utilizar solo en td y <p> utilizas <div>, mira:
Código HTML:
<table>
<tr>
<td valign="top">
<div><img src="images/small/sala1.gif" alt="Salón" width="125" height="65" border="0" class="foto" title="Salón" /></div>
<div class="ampliar"><a href="fotos/sala1.jpg" rel="lightbox[fotos]" title="Salón">Ampliar imagen<img src="images/ampliar.png" border="0" alt="ampliar" title="Ampliar imagen" /></a></div></td>
<td valign="top"><div><img src="images/small/sala2.gif" alt="Salón" width="125" height="65" border="0" class="foto" title="Salón" /></div>
<div class="ampliar"><a href="fotos/sala2.jpg" rel="lightbox[fotos]" title="Salón">Ampliar imagen<img src="images/ampliar.png" border="0" alt="ampliar" title="Ampliar imagen" /></a></div></td>
<td valign="top"><div><img src="images/small/sala3.gif" alt="Salón" width="123" height="65" border="0" class="foto" title="Salón" /></div>
<div class="ampliar"><a href="fotos/sala3.jpg" rel="lightbox[fotos]" title="Salón">Ampliar imagen<img src="images/ampliar.png" border="0" alt="ampliar" title="Ampliar imagen" /></a></div></td>
</tr>
</table>
las medidas a las imagenes se las di arbitrariamente dale medidas al td con margenes para una buena separación
así dentro de un td ninguno necesitaría flotar, otra cosa coloca medidas de ancho y alto al tag img si no me equivoco ese le ayuda a interpretar a los navegadores, pruebalo y avisas