Das ist eine Konstellation, auf die die
VCL nicht direkt ausgelegt ist.
Schau mal, ob vielleicht OnCloseQuery vorher getriggert wird. Dann könntest Du dort ein Flag setzen und dies für einen vorzeitigen Abbruch der Schleife prüfen.
Ansonsten gibt es vielleicht eine Message, die man noch abfangen kann.
Aber so etwas kann dann auf späteren Delphi-Versionen oder auf verschiedenen Windows-Versionen und -Rechnern schon wieder ganz anders laufen.
Vielleicht kannst Du Dein SubFormular ja auch durch ein Panel ersetzen, das Du einfach in Dein Hauptformular einsetzt.
Grundsätzlich ist sicher sinnvoll, solche längeren Aufgaben in Threads auszulagern. Dazu muss man dann aber auch die konkreten Zuständigkeiten der einzelnen Formulare klären...
ProcessMessages ist immer mit Vorsicht zu genießen.