Indy также производит две или три ожидаемые утечки памяти, такие как целое число и критическая секция. Но они могли или не могли быть зарегистрированы, как ожидалось. Так что я не могу сказать, это те, кого вы видите. Если бы вы запустили свой код 5 раз, вы бы увидели больше утечек, чем сейчас?
Что касается WaitFor, предложенного Smasher, для вызова перед вызовом Free. В этом не должно быть необходимости и причины ваших проблем, потому что если вы проверите деструктор TThread, вы увидите, что именно это уже сделано.
Почему вы получаете сообщение о нарушении прав доступа в своем отчете об утечке, я действительно не знаю. Однако вы вызываете Disconnect из-за пределов вашего потока, в то время как компонент Indy используется в вашем потоке. Не делайте этого, использование одних и тех же не поточно-безопасных компонентов из разных потоков порождает проблемы. Это может привести к утечке доступа. Пусть поток сам выполняет ВСЕ вызовы компонента Indy.
Сокращение ReadTimeOut в соответствии с предложением Smasher - хорошая идея, чтобы убедиться, что ваше приложение не блокируется слишком долго.