Ma da che cappello esce la var $riga2.
Poi perche' un while annidato in altro while?
usa code invece di quote, e metti degli spazi per evitare il ritorno a capo della stringa in modo improprio...
	codice:
	$sql="SELECT * FROM $cat";                                  
$categoria = mysql_query($sql,$conn);                         
                                                            
while($riga = mysql_fetch_array($categoria)){               
$Inox = $riga["Inox"];                                      
$Antracite = $riga["Antracite"];                            
$Nero = $riga["Nero"];                                      
$Bianco = $riga["Bianco"];                                  
                                                            
$colori = array("$Inox", "$Antracite", "$Nero", "$Bianco"); 
                                                            
$i=0;                                                       
// da dove  esce &riga2                                         
while($riga2 = mysql_fetch_assoc($categoria)) {             
                                                            
echo $riga2[$i];                                            
                                                            
$i=$i+1;                                                    
}                                                           
}