Fine uploader — JS + server-side. Сохраняем изображение на сервере, callback отображает его юзеру. После сабмита добавляем изображениям статус подтвержденных. Периодически запускаем сборщик мусора, который удаляет загруженные, но не подтвержденные изображения.