After some research I have selected WinSCP on the client side, WinSSHD on the server side, and SFTP. I have been doing some testing and scripting and so far I am quite pleased with the results.
I am concerned about two possibilities though, that I cannot easily test:
1. Suppose the SSH server has a dynamic IP address and uses dynamic DNS. So WinSCP will connect using a hostname, but in fact the server's public IP address will change (its private IP address will NOT change). When the server's public IP address changes, will the keys become invalid?
2. Can I assume that with default settings, WinSCP will timeout and give up after a reasonable amount of time if (a) it can't establish the connection, or (b) the connection is dropped during a transfer?
Any other suggestions would also be very welcome.