Check out Node.insertBefore() and Node.nextSibling (fiddle):
var myimg = document.getElementById('myimg');
var text = document.createTextNode("This is my caption.");
myimg.parentNode.insertBefore(text, myimg.nextSibling)
or Element.insertAdjacentHTML() (fiddle):
var myimg = document.getElementById('myimg');
myimg.insertAdjacentHTML("afterend", "This is my caption.");