ho corretto delle cose che non mi parevano giuste
ma quello che chiedevi tu, credo, era di mostrare il msg se il valore della select è "", prima veniva controllato solo se un elemento era selezionato (nel caso di select singole, sempre)
codice:
function checkrequired(which) {
  var pass=true;
  for (var i=0; i<which.length; i++) {
    var tempobj=which.elements[i];
    if (tempobj.name.substring(0,8) == "required") {
      if (((tempobj.type=="text" || tempobj.type=="textarea") && tempobj.value=='') || (tempobj.type.toString().charAt(0)=="s" && tempobj.options[tempobj.selectedIndex].value == "")) {
        pass=false;
        break;
      }
    }
  }
  if (!pass) {
    alert("Non hai compilato correttamente il form. Alcune informazioni non sono state inserite. Clicca su OK e verifica l'errore");
    return false;
  } else
    return true;
}