А кто будет в topPos прибавлять высоту предыдущего изображения, что бы они не рисовались друг на друге?
var topPos = 0;
for (var i = 0; i < imagesForCanvas.length; i++) {
var currentImg = imagesForCanvas[i];
context.drawImage(currentImg.img, 0, topPos);
topPos += imagesForCanvas[i].height;
}