As Evan said, you are modifying the list as you iterate over it. If you build the list seperately, and then iterate over that (since it won't shrink when you move an element) it will work. A quick example that:
//move function
function moveLeft () {
var selectlist = document.getElementById('select2');
var hom = selectlist.getElementsByTagName("li");
var homs = selectlist.getElementsByTagName("li").length;
var toMove = [];
//count the number of list items and set as homs
for (var i=0;i<homs;i++){
var subcheck = hom[i].getElementsByTagName('input')[0];
if (subcheck.checked) {
toMove.push(hom[i]);
}
};
for (var i = 0; i < toMove.length; i++) {
document.getElementById('select1').appendChild(toMove[i]);
}
};