In realtà ho omesso di scrivere l'"ul" che ho prima e dopo il while in quanto non c'entra con quel che stiamo vedendo 
Mi è venuta in mente una soluzione (forse) migliore,
1. Dico di estrarre i valori con un "order by 'cat' ",
2. Faccio una condizione che dice: (se il "cat" è uguale al precedente, stampa "subcat"..., altrimenti stampa "cat" e "subcat")
Credete sia una soluzione? soprattutto fattibile? 
EDIT:
Ordinando l'estrazione per cat e dopo subcat, sono riuscito ad ottenere ciò che volevo

Questo è il codice che ho utilizzato:
Codice PHP:
$TmpCat = 0;
if ($conto< 1) {
print "<center>
La ricerca non ha prodotto nessun risultato</p>/center>";
}
else {
echo "<ul>";
while ($conto > $i) {
$Cat = mysql_result($risultati,$i,'Marca');
$SubCat = mysql_result($risultati,$i,'Modello');
if($Cat == $TmpCat){
print "<ul>$SubCat[/list]";
}
else{
print "[*][b]$Cat[/b]
";
print "<ul>$SubCat[/list]";
}
$TmpCat = $Cat;
$i++;
}
echo "[/list]";
}
Ora prima che passi alla formattazione c'è qualche consiglio che mi potete dare, cioè qualche errore che posso aver fatto o qualche miglioria da poter apportare??