Vale ya lo he solucionado, no se porque, pero restando 26 horas, a la que introduce el usuario ya muestra la diferencia correctamente.
Código Delphi
[-]PROCEDURE TForm1.RestanteTimer(Sender: TObject); VAR
a: ttime;
b: ttime;
c: ttime;
BEGIN
a:= now;
b:= EncodeTime( 28-(StrtoInt(hora.Text)), (StrtoInt(minuto.Text)), (StrtoInt(segundo.Text)), (StrtoInt(msegundo.Text)));
c:= b-a;
label3.caption:= timetostr (c);
END;
De todas formas, no se porque se me va incrementando en vez de disminuyendo el tiempo que queda :-( ¿alguien sabe porque?