Siempre es mejor trabajar con timestamps:
Código PHP:
<?php
$horaInicio = "10:00";
$horaFinal = "18:00";
$arrayInicio = explode(":", $horaInicio);
$arrayFinal = explode(":", $horaFinal);
$timeInicio = mktime($arrayInicio[0], $arrayInicio[1]);
$timeFinal = mktime($arrayFinal[0], $arrayFinal[1]);
while($timeInicio <= $timeFinal) {
echo date("H:i", $timeInicio) . "<br />\n";
$timeInicio = $timeInicio + (60 * 30);
}
?>