(Does it have to be FTP? FTP have trouble with firewalls, ASCII mode and of course the password is in the clear.)
Many languages have FTP libraries available you could string together with a small amount of UI glue to make your own simple uploader app. For example Python has an ftplib in the standard library. Last time I did this was in C with Pfau's ftplib, for example, but modern scripting languages will be much easier to write in if you don't mind the overhead of packaging your app up with an interpreter.
You have .NET in your tags... there isn't FTP in the standard class library for .NET but you can certainly download third-party libraries freely. On the other hand you say cross-platform, so I'm not sure if you're really talking about .NET on the client.
What you could do is provide multiple means of upload, for example a basic HTTP* file upload built into your site, which everyone will know how to use, and a standard [S?]FTP interface for the advanced users who will be able to operate an FTP client. Not that operating an FTP client is really that difficult: just tell them to paste an ftp:// URL into Windows Explorer and most people should get on all right.
*: ideally using AJAX feedback to let the user know how for their upload is going, and/or perhaps a Flash uploader. And remember to turn off/up any script timeout rules on the server so it doesn't give up halfway through an upload. HTTP upload will never be optimal for files of the order of 100MB, but you can certainly improve the default rather crappy unresponsiveness of browsers here.