Con jquery.post(), los datos se envían a la página del controlador, como si hiciera clic en "enviar". El problema es que las cargas de archivos no pueden (todavía) procesarse con javascript (creo que la única excepción es ff 4).
La mejor solución que encontré para una experiencia de usuario coherente es este complemento:http://jquery.malsup.com/ formulario/
Maneja a la perfección la carga a través de iframe y es bastante liviano. Solo usa su función en lugar de publicar y estarás bien.