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;
}
}