como veo que usas una tabla, lo único que se me ocurre es que crees un contador para que cada cierto numero de registros te imprime el </tr>, pero ten cuidado porque, por lo que veo estas cerrando el </tr> por cada vuelta del while, pero no veo que lo vuelvas a abrir
ejemplo:
Código PHP:
if ($total > 0) {
$cont=0;
while($row=mysql_fetch_assoc($sql_exec)){ ?>
<td align="center"><div align="center"><a href="ficha_cat.php?id_cat=<?php echo $row['id']; ?>"><?php echo $row['nombre']; ?></a> </div></td>
<?php if($cont==3){
echo "</tr>";
$cont=0;
}else{
$cont++;
}
} ?>
<?php } else {
echo ("No hay categorias para mostrar");
saludos.
EDITADO: posteaste mientras escribia, ahora checo lo nuevo que pusiste.