дело в том, что ты вешаешь событие после определения пути картинки и браузер кеширует эту картинку и считает загруженной. ты вешай ДО определения пути и будет счастье
как тут
а если хочешь вешать после, то делай доп проверку, как тут:
$("#myImg").one('load', function() {
alert('Image Loaded');
}).each(function() {
if(this.complete) $(this).load();
});