PHP код:

$td_in_tr = 3; // количество ячеек в строке
for ($i = 0; $i < $num_of_images; $i++)
{
if ($i % $td_in_tr == 0) echo "<tr><td><img ... ></td>"; // если номер текущей картинки делится на 3 без остатка, начинаем новую строку
else if ($i % $td_in_tr == ($td_in_tr - 1)) echo "<td><img ... ></td></tr>"; // если остаток = 2, то строку заканчиваем
else echo "<td><img ... ></td>"; // иначе просто внутренняя ячейка
}
И ещё можно добавить некоторое количество пустых ячеек (или какую-нибудь проверку) на тот случай, если картинок не хватает на заполнение всех строк полностью.