In the past I have successfully used Unison File Synchronizer.
It works on MS Windows and most of the Unix family (and will even sync cross-platform). It works in both directions:
Unlike simple mirroring or backup utilities, Unison can deal with updates to both replicas of a distributed directory structure. Updates that do not conflict are propagated automatically. Conflicting updates are detected and displayed.
It is the result of a research project. I found it quite easy to use, and most of all, very reliable (it handles connection failures etc. very carefully).
It uses its own unencrypted protocol, but can easily be tunneled over SSH if necessary.
To use, you just point it at two directories (local, remote-mounted or tunneled via SSH). On first run, it will find and show any differences for you to reconcile. Afterwards, each time you run it it will silently distribute non-conflicting changes, and prompt you for conflicts (though you can tell it to never prompt). There is a command-line and a graphical frontend for this.
And did I mention it's free software?
One caveat: Cross-platform synchronization does not work properly if there are non-ASCII filenames, because Unison does not correctly transcode filenames (though there are workarounds). But for Windows-Windows there should be no problem.