Кстати, чтобы не создавать новый объект можно приписывать к урлу (в срц) какую-нить шнягу типа ?v=случайное число, или текущее время. Тогда все картинки будут качаться с сервера. А зачем если можно сделать пустой объект.
В случае когда функция колбэка навороченная, ее пишут отдельно и втыкают только идентификатор
img.onload = complex_function_for_on_load_image;
ЗЫ С чтением файлов идентично:
reader = new FileReader();
reader.onload=(function(file) {
return function(e){
// ..
reader.readAsDataURL(f);
Скрипт засунул свой кусок в свойство объекта и скончался. Когда файл укачается браузер вызовет этот кусок и файл будет обработан.