Meine nächste Vermutung, bei der ich mir aber nicht sicher bin ist, dass ganz keine Möglichkeit besteht das jemals ein Stop bei deinem Service ankommt.
Denn du hast da deine Endlosschleife und darin maximal ein Sleep. Aber nirgendwo verarbeitest du Nachrichten oder dergleichen.
Das ist wie in einer normalen Anwendung. Wenn du dort eine Endlosschleife drin hast welche keine Nachrichten verarbeitet, kann man auch auf schließen klicken wie man will und es passiert nichts weil die Nachrichten vom Programm nie verarbeitet werden.
[Edit]
Hab mal fix gesucht und ich glaub dir fehlt sowas:
Delphi-Quellcode:
while not Terminated do
begin
[...]
ServiceThread.ProcessRequests(False);
end;
[/Edit]