jQuery のドキュメントによると、画像の読み込みでは load イベントがクロスブラウザで同じ挙動を保証できないようなので、すべてのブラウザで実現するのは無理かもしれません。
が、jQuery.Deferred を使ってご要望の処理は以下のように書けます。Firefox 14、Chrome では動作しています。
// requirements: jquery >= version1.6 $(document).ready(function() { // urls of the images you want to load var images = [ "/1.jpg", "/2.jpg", "/3.jpg", "/4.jpg", "/5.jpg" ]; // make jQuery.promise objects var promises = $.map(images, function(src, i) { var $img = $('<img />'); var defer = $.Deferred(); $img.bind({ load: function(event) { defer.resolve($img); }, error: function(event) { defer.reject("load failed: " + src); } }); $img.attr('src', src); return defer.promise($img); }); $.when.apply(null, promises) // callback function called when you have finished loading all images successfully .done(function() { $('body').append(Array.prototype.slice.call(arguments)); }) // callback function called when you have failed to load an image .fail(function(message) { $('body').prepend($('<div></div>').text(message)); }); });