It seems like a strange idea to transfer files using a connectionless protocol - so in what situation would you not care about if the entire file is delivered or not? I read somewhere that TFTP is used for upgrading the firmware of routers, but why would you do that with TFTP? Wouldn't that mean that you can't be sure that all the data (the entire update) has arrived at the destination?
I'm going to add a bit to YLearn's excellent answer... You always want the entire file delivered. Asserting that one doesn't want the whole file transferred because of TFTP is a faulty understanding of TFTP.
It is a very simple, but still reliable protocol. There are times you may get stuck at the Cisco IOS rommon prompt (either for debugging, or because of an error). Rommon is a tiny environment itself; rommon images are typically around 500KB. Sometimes you wind up transferring files from within rommon; thus you need a small file transfer protocol like TFTP if you want the protocol to fit inside rommon. By using tftp, rommon can use a much smaller IP stack (UDP and IP, without TCP).
No authentication is primarily the reason I do it; it is less typing and a very easy way to transfer images. You certainly can use scp or ftp. There is no reason to bother with that... so what if someone sniffs my IOS image?
This is an incorrect understanding of TFTP. TFTP is a reliable transfer protocol, by default each tftp packet must be acknowledged, which means it's slower, especially over a WAN (because there are no TCP windowing dynamics).
Once the image is on the router, you should always verify the IOS checksums against those posted on Cisco's website...
TFTP uses UDP for the transfer, which as you indicate is a connectionless protocol. FTP, SCP, HTTP or other methods of transfer typically use TCP.
UDP requires less overhead and is generally faster than TCP. There is no TCP acknowledgements nor the TCP window to account for during the transfer.
There are generally other methods to verify the data once it has arrived, typically by comparing a calculated hash to a known value. Since the transfer typically takes place over your own network under your control, which hopefully is reliable, they generally turn out fine.
Also, many devices will allow you to set a primary and a backup image to boot from, so you can configure the device to boot from the backup if the primary image fails to load for some reason.
If you are using an unreliable network, another option is typically available to use such as FTP. However you will still probably want to use any verification methods you have available to ensure data integrity.