If the file is <100mb use a byte array property on a struct or a class.
If the file is >=100mb use MTOM. The caveat, and there always is one, that MTOM only provides stream based access on files being downloaded from the web server and not those being uploaded.. (Yeah, sucks)
-Dave