Penso sia un problema di elseif....

Soluzioni

if ($ritardo > 180){
echo " <td>Ritardo sostenuto!</td>";
}else{
if ($ritardo > 120 || $ritardo < 180 ){
echo " <td>Ritardo moderato </td>";
} else{
echo " <td>in orario! </td>";
}
}

oppure

fai tre if separati

oppure

usi un select case

per il colore

echo " <td bgcolor='FFFFFF'>Ritardo sostenuto!</td>";