Не, лучше все-таки в потоке просто создать свой экземпляр компонента, а то придется синхронизацию писать...
Код:
procedure TMyThread.Execute;
var
ftp : TIdFtp;
begin
ftp := TIdFtp.Create(Nil);
Try
// Код использования
Finally
FreeAndNil(ftp);
End;
end;
Кстати, если в классе потока много разных функций, обращающихся к данному компоненту, то лучше дествительно создавать его, компонент, в конструкторе и уничтожать в деструкторе.