buenas,
solo una observación.
insertBefore se puede comportar como
appendChild. de ahí que el código inicial de @alexis88 no reporta error. el estandar DOM Core Level 2 dice que si el elemento de referencia es
null, entonces el elemento se agrega al final del padre. recordemos que:
null es un objeto especial, y que las propiedades
firstChild, lastChild, nextSibling, prevSibling pueden devolver null según sea el caso.
Cita:
Iniciado por http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-952280727 insertBefore
Inserts the node newChild before the existing child node refChild. If refChild is null, insert newChild at the end of the list of children.
en lo personal, no me preocuparía.