похоже на ошибку с областью видимости переменной
попробуйте запихать тело цикла в замыкание
(function(key) {
var img = new Image();
var w = self.addedAttr[key].width;
var h = self.addedAttr[key].height;
var y = self.addedAttr[key].top, x = self.addedAttr[key].left;
img.onload = function() {
scr.drawImage(img, x, y, w, h);
}
img.src = "/images/redactor/attrs/" + self.addedAttr[key].img;
})(key);
еще насколько я помню, конструкция "img.onload" сама по себе проблемна
например не срабатывает если изображение уже есть в кешэ