No JavaScript antigo, você poderia fazer isso:
document.body.innerHTML = '<p id="foo">Some HTML</p>' + document.body.innerHTML;
Em resposta ao seu comentário:
[...] eu estava interessado em declarar a origem dos atributos e eventos de um novo elemento, não a origem innerHTMLde um elemento.
Você precisa injetar o novo HTML no DOM; é por isso que innerHTMLé usado no exemplo do JavaScript da velha escola. O innerHTMLdo BODYelemento é adicionado ao novo HTML. Não estamos realmente mexendo no HTML existente dentro do BODY.
Vou reescrever o exemplo mencionado acima para esclarecer isso:
var newElement = '<p id="foo">This is some dynamically added HTML. Yay!</p>';
var bodyElement = document.body;
bodyElement.innerHTML = newElement + bodyElement.innerHTML;
// note that += cannot be used here; this would result in 'NaN'
Usar uma estrutura JavaScript tornaria este código muito menos prolixo e melhoraria a legibilidade. Por exemplo, jQuery permite que você faça o seguinte:
$('body').prepend('<p id="foo">Some HTML</p>');