Hmm, it might be a bit better to do something like:
HTMLInputElement.prototype.__defineGetter__('label', function() {
var labels = document.getElementsByTagName('label');
for (var i in labels) {
if (labels[i].htmlFor == this.id) return labels[i];
}
return null;
});

Now even dynamically created form elements will inherit the label property... of course, gecko is the only browser cool enough to expose constructors for DOM interfaces, but hey, it rocks anyway.