Я как-то сделал, что загрузка картинки идет аяксом после того, как прошла клиентская и серверная валидация полей. Из очевидных минусов - труднее в управлении, зато нет необходимости удалять картинки.
Можно сделать так, чтобы загружалось в любом случае (в папку temp), после серверной валидации перемещать картинку из temp в папку назначения, а саму папку temp раз в день чистить кроном.