Hola:
Siempre he subido archivos simulando ajax mediante un iframe oculto (o no) y enviando el form con un submit... no sé si todos los navegadores permiten hacerlo de otra manera, pero si con tu código piensas que puedes hacerlo, al menos supongo que el enctype debería ser multipart/form-data...
Saludos