The biggest problem with the document.createElement technique is that it's really SLOW. Using a framework is best, but either way, I'd suggest building the options list and setting the innerHTML property on the select box.
strOptions = "";
for (blah blah blah)
{
strOptions += '<option value="' + day + '">' + day + '</option>'
}
birthDay.innerHTML = strOptions;
The browser is going to be able to parse the HTML a lot faster than you'll be able to build these elements by hand.
In response to the comment, this is really why using a platform library is always worth it. In YUI3, I do this:
var fillSelectbox = function(select, optionList) {
var i, option = '';
for (i = 0; i < optionList.length; i += 1) {
option += '<option value="' + optionList[i].Value + '" selected="' + (optionList[i].selected ? '"selected"' : '""') + '">' + optionList[i].Text + '</option>';
}
select.append(option);
select.set('selectedIndex', -1);
};
Where select is the selectNode and optionList is a JavaScript array.