Buenas

el problema que tienes es que en TDateTime se estan almacenando tambien los milisegundos y tu quieres que la resta sea a nivel de SEGUNDO, pues bien... hagamos la resta eliminando todo lo que no queremos
Var
HoraInicio_Date : TDateTime;
HoraFin_Date : TDateTime;
HoraResultado_Date : TdateTime;
Fecha :String;
HoraInicio_Str : String;
HoraFin_Str : String;
Begin
//Primero me guardo un String con la Fecha que luego usare
Fecha := FormatDateTime('dd/mm/yyyy', now);
//Guardamos las fechas en el formato que queremos
HoraInicio_str := FormatDaeTime('hh:nn:ss', horaInicio_Date);
HoraFin_str := FormatDaeTime('hh:nn:ss', horaFin_date);
//Ahora movemos los Strings de nuevo a los DatTime
//De manera que los Milisegundos iguales en ambos
//al igual que el dia, mes y año
HoraInicio_Date := StrToDate(Fecha + ' '+HoraInicio_Str);
HoraFin_Date := StrToDate(Fecha + ' '+HoraFin_Str);
//Restamos ambos
HoraResultado_Date := HoraFin_Date - HoraInicio_Date;
// Si mostramos su valor en caso de que los iniciales fuesem
// 10/09/2003 10:14:25 430 y 10/09/2003 10:14:26 110
//Al hacer un formatDateTime con mascara 'hh:nn:ss' seria algo así
ShowMessage(FormatDateTime('hh:nn:ss', HoraResultado_date)); //Seria 00:00:01
end;
Esta en muchos pasos para que se vea claro pero lo puedes resumir...
Begin
HoraResultado_date := StrToDate(FormatDateTime(Fecha+' '+'hh:nn:ss',
HoraInicio_Date )) - StrToDate(FormatDateTime(Fecha+' '+'hh:nn:ss',
HoraFin_Date ))
End;
Espero que te sirva de ayuda y si tienes algún problema no dudes en preguntar, que aquí estamos todos para ayudarnos...