Solo es cuestión de que manejes correctamente tu loop do/while, prueba esto:
Código PHP:
<?php
$counter = 1;
$columns = 3;
?>
<?php do { ?>
<table width="330" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align="center" bgcolor="#CCCCCC">
<!-- ITEM -->
<table width="300" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="180" valign="top"><p><a href="esp_prod.php?id=<?php echo $row_Recordset2['id']; ?>"><span class="textoINDEX"><span class="textoMulti3"><br />
<?php echo $row_Recordset2['nombre']; ?></span></span><br />
<br />
</a><span class="textoINDEX"><span class="textotitResNot">Código:</span> <span class="textoMulti1"><?php echo $row_Recordset2['codigo']; ?></span></span></p>
<p align="left"><span class="textoINDEX"><a href="ficha_prod.php?id=<?php echo $row_Recordset2['id']; ?>"><br />
<img src="imgs/boton_pro.jpg" width="112" height="22" border="0" /></a></span></p></td>
<td width="19"> </td>
<td width="100" valign="middle"><p align="justify" class="textoINDEX"><a href="esp_prod.php?id=<?php echo $row_Recordset2['id']; ?>"><img src="imgprod/<?php echo $row_Recordset2['imagen']; ?>" width="100" height="100" border="0" class="bordeimg" /></a></p></td>
</tr>
</table>
<!-- / ITEM -->
</td>
<?php if( ( $counter % $columns ) == 0 ) { ?></tr><tr><?php } ?>
</tr>
</table>
<?php $counter++; ?>
<?php } while ($row_Recordset2 = mysql_fetch_assoc($Recordset2)); ?>