<p>Does a free .NET library exist with which I can upload a file to a SFTP (SSH FTP) server, which throws exceptions on problems with the upload and allows the monitoring of its progress?</p>

There is no solution for this within the .net framework.
http://www.eldos.com/sbb/sftpcompare.php
outlines a list of un-free options.
your best free bet is to extend SSH using Granados.
http://www.routrek.co.jp/en/product/varaterm/granados.html