As you can tell, detecting when images have loaded, especially if they are cached, is a tricky business. Luckily, Andrée Hansson and Paul Irish have done a bunch of work in this area which should make your life easier.
$.event.special.load replaces jQuery's .load() event with a special event that will fire regardless of whether the image is cached.
imagesLoaded plugin allows you to execute a callback when all the images in a given set have loaded.
Hopefully these resources will be useful to you.