Mi rispondo da solo: raggruppare gli array uno dentro l'altro non è difficile con questa tipologia di array associativi:

Codice PHP:

#SE ABBIAMO 3 NIDIFICAZIONI, QUESTA È L'ULTIMA
function render($record) {
  
$output "<tr>\n";
  
$output .= "<td>{$record->colore}</td>\n";
  
$output .= "</tr>\n";
  return 
$output;
}

$result mysql_query("SELECT colore, taglia, tipologia_abbigliamento FROM vestiti WHERE tipo LIKE 'vestito' ORDER BY colore, taglia, tipologia_abbigliamento");

$set = array();

while (
$colore mysql_fetch_object($result)) {
  
$set[$colore->tipologia_abbigliamento][$colore->taglia][] = $record;
}

#ksort($set);

#CONTENITORE 1
foreach ($set as $tipologia => $tipologie) {
  print 
"<h2>{$tipologia}</h2>\n";

#CONTENITORE 2
  
foreach ($tipologie as $taglia => $taglie) {
    print 
"<table>\n";
    print 
"<caption>{$taglia}</caption>\n";
    print 
"<tr><th>Colori</th></tr>\n";

#CONTENITORE 3
    
foreach ($colore as $colori) {
      print 
render($record);
    }
    print 
"</table>\n";
  }

Questo è il modo migliore per visualizzare con una query i dati di una tabella raggruppati per n volte.