Hay un IF que no necesitas, si es que solamente te sirve para escribir el nombre del día. Puedes hacer un array antes del while:
Código PHP:
$nombre_dias = array('', 'LUNES', 'MARTES', 'MIERCOLES', 'JUEVES', 'VIERNES', 'SABADO', 'DOMINGO');
Y luego, en lugar de usar date() con el parámetro 'l' (ele minúscula), utilizas 'N', así te devuelve el número que tendrá correlación con tu array.
Ahora, para escribir el nombre del día sólo una vez, puedes guardar el último día que leiste y si el actual es igual, ya no lo imprimes.
la verdad, no lo he probado, pero lo que te digo es algo así
Código PHP:
$nombre_dias = array('', 'LUNES', 'MARTES', 'MIERCOLES', 'JUEVES', 'VIERNES', 'SABADO', 'DOMINGO');
$ultimo_fecha_leida = '';
while($row = mysql_fetch_array($result))
{
$fecha = strtotime($row[fecha]);
$fecha1 = date('N', strtotime('$fecha'));
$horaComienzo = substr ($row[horaComienzo], 0,5);
$horaFin = substr ($row[horaFin], 0,5);
if($fecha != $ultima_fecha_leida)
{
echo "<tr><td width=100><center><font face=Arial size=2 color=#016599><b>".$nombre_dias[$fecha1]."</td>";
$ultima_fecha_leida = $fecha;
}
echo "<td><a href='actividad.php?actividad=".$row['actividad']."'><font face=Arial color=#02669A size=2><b>".$row['actividad']."</b></a></td>";
echo "<td><font face=Arial color=#000000 size=2>" . FechaFormateada2($fecha) ."</td>";
echo "<td><font face=Arial color=#000000 size=2>"."Hora: ". $horaComienzo .'-'. $horaFin."<br /><br />"."</td></tr>";
}
Saludos,