No conozco a fondo el Delphi 2009
pero has de tener cuidado con los bucles del tipo que has indicado, te pueden colgar el sistema. El timer que indica schdamian le da un respiro pero es conveniente por algo parecido a
application.processmessages para que el procesador dedique tiempo a otras tareas.
leer_inicio:= '';
while ( leer_inicio <> chr($02) ) do
begin
ComPort1.ReadStr(leer_inicio,1);
application.processmessages;
end;