I spent a chunk of the weekend implementing Gnome-VFS support in Vim. Originally I had thought to do this by changing the Vim core (in C) by wrapping function calls like open, write, close, stat, etc. to use the gnome-vfs equivalents. I realized that this approach would be a lot of work, though, because those routines are not just used to load/save buffers, but also temporary files and any other IO that Vim does. Auditing all of the code would be very difficult, and in cases where Vim wants to deal with local files, it doesn't make sense to do this via the gnome-vfs functions.
Besides, Vim already has support for ftp, scp and a few other protocols by means of the netrw plugin (which is included in the vim distribution).
I discovered that gnome-vfs ships with a tool called "gnomevfs-copy", which can copy from one uri to another. This is essentially the same thing you do with scp, but much more general, as it works for all valid gnome-vfs uris.
Using gnomevfs-copy, I added gnomevfs support to the netrw plugin. That meant learning a lot more vim-script, but I'm very happy with the result: using nautilus, I can browse to a remote server (for example using sftp), and click to edit a file in gvim. Gnome-vfs supports more schemes than I thought, including ssh, nntp, sftp, network, tar, gzip, https, rio500, ftp, davs, dav, bzip2, smb, pipe, and http. Using the uri-chaining, it's probably also possible to directly edit a file in a gzipped tar file (haven't tried yet, though).
I will be submitting it to netrw's maintainer, but until then you can get it here.
Update: I renamed the file to have a .vim extension (as it should). To install it, just drop it into your ~/.vim/plugin directory (creating this directory if necessary).