SSH/SCP would be a good choice, or SFTP. If you have a web server you could setup a web page to accept file uploads via a secure connection and an authentication page (either built-into the web page or in Apache/IIS).
Where I work now, we have "two-factor authentication". In reality, we require users on the outside to have a signed certificate from us. They request it from our Microsoft Certificate Server. It gets approved from someone here, then the user is able to get through our proxy web server. That proxy server is setup to direct the user to specific sites on another internal server where we have some custom file upload pages. All built in PHP, they use Apache's basic authentication for the 2nd layer of protection. We also have SSL setup on both layers. It may not be the uber best solution, but it gets the job done.