One of those tutorials I wish I had written, since I already “reverse engineered” it (if I can call it that) on my own and coded up my own Ajax-style upload box for a web app I worked on last summer.
But someone beat me to it: Sajith.M.R explains how to upload files like the Gmail client. The first article on Gmail was very cool as well (link from there).
In my experience, the biggest pain using this method is actually debugging it. If you’re used to using Firebug (for example) to review XMLHttpRequests, well you don’t get none of that here. (Though Wireshark should still be a handy debugging tool in this case).