Innanzitutto, il codice deve essere formattato con l'apposito tasto #.

Il problema risiede nel fatto che stai creando di fatto l'elemento <img> usando la funzione document.createElement(), ma poi la inserisci nel <div> usando innerHTML, che è una proprietà che si aspetta del testo (ossia l'HTML da inserire all'interno), e non l'elemento in sé.

O definisci il markup HTML dell'immagine e usi innerHTML, oppure inserisci l'elemento <img> che hai creato tramite la funzione appendChild() del <div>, che inserisce l'elemento come "figlio":

codice:
var img = window.document.createElement("img");
window.document.getElementById("my_div").appendChild(img);
Leggi la documentazione collegata alle funzioni per ulteriori approfondimenti ed esempi.