Das wichtigste ist erst einmal, dass du von
Indy zu ICS wechselst.
Indy nutzt
immer blockierende Sockets, so dass du einen gestarteten Vorgang nicht abbrechen kannst. Timeouts kannst du natürlich nutzen, aber das ändert daran nichts, dass dann eben der entsprechende Thread hängt.
ICS nutzt aber nicht blockierende Sockets. Wenn du das Connect von TWSocket aufrufst, bekommst du ein Event OnSessionConnected, wenn die Verbindung hergestellt wurde. Das kannst du auch problemlos in einem Thread machen und wenn du die Verbindung oder den Verbindungsversuch abbrechen möchtest, rufst du einfach Close auf.