нет ничего невозможного: после вызова Terminate нужно вызвать Disconnect у TIdHTTP. тогда его вызов Get\Post в потоке сразу завершится Exception. ну а в Execute обработать это исключение.
Код:
TThread.Terminate;
TIdHTTP.Disconnect;
TThread.WaitFor;
TThread.Free;