Q:

Saber cuando el navegador ha procesado una imagen después de cargarla

Quisiera saber si hay alguna manera de saber cuando el navegador ha terminado de procesar una imagen después de cargarla, me explico:
Cuando introduces una imagen, se puede saber cuando ha terminado de cargarla con la propiedad complete o el método onload del objeto, pero entre que la carga y la muestra, pasa un tiempo, ya que debe procesarla (por ejemplo cambiarle el tamaño), de manera que en imágenes "muy" grandes, aun que el navegador afirme haber terminado de cargar la imagen, es posible que no se muestre inmediatamente.
Aquí dejo un ejemplo de a lo que me refiero, por log muestra un mensaje cuando se carga, pero tarda un tiempo en aparecer la imagen.
Ejemplo usando el método onload:

 var imagen;
 ponImagenTocha();
 function ponImagenTocha(){
  imagen=document.createElement("IMG");
  imagen.height=200;
  imagen.src="http://orig09.deviantart.net/5e53/f/2013/347/f/d/i_don_t_want_to_ever_leave_the_lake_district_by_martinkantauskas-d6xrdch.jpg";
  imagen.onload=function(){esperarImagen();};
 }
 function esperarImagen(){
   console.log("Completo.");
   document.body.appendChild(imagen);
 }

Ejemplo con la propiedad complete:

 var imagen;
 ponImagenTocha();
 function ponImagenTocha(){
  imagen=document.createElement("IMG");
  imagen.height=200;
  imagen.src="http://orig09.deviantart.net/5e53/f/2013/347/f/d/i_don_t_want_to_ever_leave_the_lake_district_by_martinkantauskas-d6xrdch.jpg";
  esperarImagen();
 }
 function esperarImagen(){
  if (!imagen.complete){
   console.log("Cargando...");
   setTimeout(function(){
    esperarImagen();
   },16);
  } else {
   console.log("Completo.");
   document.body.appendChild(imagen);
  }
 }

A:

Grácias al usuario @Kaiido de stackoverwlow en inglés, he resuelto el problema creando un canvas con la imagen, ya que el navegador espera que termine.
Este es un ejemplo de función para esperar a que carguen una imágen ( o una matriz de imágenes):

var imagesList=["https://omastewitkowski.files.wordpress.com/2013/07/howard-prairie-lake-oregon-omaste-witkowski-owfotografik-com-2-2.jpg",
  "http://orig03.deviantart.net/7b8d/f/2015/289/0/f/0ffd635880709fb39c2b69f782de9663-d9d9w6l.jpg",
  "http://www.livandiz.com/dpr/Crater%20Lake%20Pano%2016799x5507.JPG"];
var BIGimages=loadImages(imagesList);
onLoadImages(BIGimages,showImages);

function loadImages(listImages){
 var image;
 var list=[];
 for (var i=0;i<listImages.length;i++){
  image=document.createElement("IMG");
  image.height=200;
  image.src=listImages[i]+"?"+Math.random();
  list.push(image);
 }
 return list;  
}

function showImages(){
 loading.style.display="none";
 for (var i=0; i<BIGimages.length;i++){
  document.body.appendChild(BIGimages[i]);
 }
};

function onLoadImages(images,callBack,n) {
 if (images==undefined) return null;
 if (callBack==undefined) callBack=function(){};
 else if (typeof callBack!="function") return null;
 var list=[];
 if (!Array.isArray(images)){
  if (typeof images =="string") images=document.getElementById(images);
  if (!images || images.tagName!="IMG") return null;
  list.push(images);
 } else list=images;
 if (n==undefined || n<0 || n>=list.length) n=0;
 for (var i=n; i<list.length; i++){
  if (!list[i].complete){
   setTimeout(function(){onLoadImages(images,callBack,i);},16);
   return false;
  }
  var ctx = document.createElement('canvas').getContext('2d');
  ctx.drawImage(list[i], 0, 0);
 }
 callBack();
 return true;
}
<DIV id="loading">Loading some big images...</DIV>

