HTML 5 incorporó la API file, ejemplo
http://blueimp.github.com/jQuery-File-Upload/
También hay muchos plugins de Jquery que hacen algo similar, pero lamentablemente este método no es soportado entre otros, por IE.
Algunos han decidido dejar fuera IE y hacer el preview sólo en el resto, pero yo no comparto dicha solución.
Para hacer algo compatible tenés esto, que ha realizado nuestro colega @Caricatos
http://www.caricatos.net/articulos/check_form.html
El código fuente puede ser descargado desde
http://www.caricatos.net/articulos/check_form.zip
Más detalles en
http://www.maestrosdelweb.com/editor...s-de-subirlas/
Te advierto que la imagen debe ser subida al server, podés ahorrarte el move_uploaded_file y trabajar con al archivo temporal, pero es subida
Saludos