Hola:
A las imágenes no se les puede asignar un link, porque no aceptan (o admiten) el atributo href con sus caracteróisticas, por eso la respuesta... a un link (un tag "a") puedes asignar ese href y dentro del tag "a" puedes poner una imagen sin ningún problema... (appendChild o innerHTML)
Estoy seguro de tu intención, por eso estoy seguro de que no te valdrá la respuesta:
img.onclick = function() {location.href = 'enlace.html'}
Saludos