I think your problem is here:Sprite = avatar.dimage[avatar.dcount];
I am guessing that dimage is some sort of container of sprites, and when you do a_sprite = another_sprite, you simply copy all the information of another_sprite into a_sprite - including its position.
What you want to do, is to change the image that your sprite points to, instead. You can do this bySprite.SetImage(Image);
Of course, that means that your dimage container should now hold images, instead of sprites.