Ciao e grazie per il veloce intervento !!! 
Ho provato a modificare aggiungendo l'if:
Codice PHP:
<?php
$colonne = 3;
$tot_righe = $num_record/$colonne;
$i_x = 0;
$x_x = 0;
$k_x = 0;
$cell_width = floor(100/$colonne);
echo "<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"3\"><tr>";
$query = @mysql_query("SELECT * FROM listino WHERE attivo = '0' ORDER BY nome_listino");
$num_record = mysql_num_rows($query);
while($array = mysql_fetch_array($query)){
// conto i prodotti di ogni sottocategoria e li visualizzo
$sql = "SELECT COUNT(*) AS totale FROM prodotti WHERE '$array[nome_listino]' = categoria";
$st=mysql_query($sql) or die(mysql_error());
$row=mysql_fetch_assoc($st);
$i_x++;
$k_x++;
$x_x++;
if ($row[totale] > 0) { // if per visualizzare o no le categorie con dentro prodotti
echo "<td width=\"$cell_width%\" align=\"center\"><font face=\"MS Sans Serif\" size=\"1\" color=\"#FFFFFF\"><a class=\"catalogo\" href=\"sotto.php?nome_listino=$array[nome_listino]\">$array[nome_listino]</a>";
echo " [b]($row[totale])[/b]"; // numero prodotti presenti nella categoria e sottocategoria
echo "</font></td>";
}
if($i_x == $colonne) {
echo "</tr>";
if ($i_x == $colonne && (($x_x/$colonne) != $tot_righe)) {
echo "<tr>";
}
$i_x = 0;
}
}
if ($colonne <= $x_x){
if (($k_x%$colonne) != 0){
$indice = $k_x;
while (($indice%$colonne) != 0 ){
echo "<td><img src=\"images/spacer.gif\" width=\"1\" height=\"1\"></td>";
$indice++;
}
if(($indice%$colonne) == 0 ){
echo "</tr>";
}
}
} else{
echo "</tr>";
}
echo "</table>";
?>
Solo che cosi' facendo mi visualizza si solo le categorie con all'interno dei prodotti ma mi scombina di molto la tabella (vedi pagina modificataqui)...Forse non sto inserendo in maniera corretta l'if....