Hola:
Los elementos Option tienen los atributos text y value, así que no aceptan nodos internos (appendChild) sino atributos (op.text/op.value)... busca info sobre options...
var nueva_op = new Option("texto", "valor");
Ahora no tengo a mano más datos, pero si buscas en las FAQs o en google, seguro que encontrarás cosas interesantes.
Saludos