To keep the image at the back of the canvas, when move elements, you need to pass:
preserveObjectStacking
And the following would work and the image is not visible in the background:
window.canvas = new fabric.Canvas('c', { preserveObjectStacking:true });
Now, on moving the shape will appear over the image.