Prova questo...
	codice:
	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<script language="JavaScript" type="text/javascript">
<!--
function selectUnselect(aCheckbox,indice) {
 for (i=0;i<mySelect.options.length;i++) {
  if (mySelect.options[i].value == indice) {
   mySelect.options[i].selected = aCheckbox.checked;
	} // if (mySelect.options[i].value == indice)
 } // for (i=0;i<mySelect.options.length;i++)
} // function select(i)
var arrPersone = new Array();
arrPersone[0] = new Array(); 
arrPersone[0][0] = "Luca Verdi (italiano)"; 
arrPersone[0][1] = "Andrea Bianchi (italiano)"; 
arrPersone[0][2] = "fine";
arrPersone[1] = new Array(); 
arrPersone[1][0] = "Franco Verdi (inglese)";
arrPersone[1][1] = "fine";
arrPersone[2] = new Array(); 
arrPersone[2][0] = "Mario Rossi (matematica)"; 
arrPersone[2][1] = "fine";
arrPersone[3] = new Array(); 
arrPersone[3][0] = "Badaze (Francese)"; 
arrPersone[3][1] = "fine";
arrPersone[4] = new Array(); 
arrPersone[4][0] = "fine";
//-->
</script>
<select id="mySelect" multiple>
</select >
<input type="checkbox" id="italiano" onclick="selectUnselect(this,0);">italiano
<input type="checkbox" id="matematica" onclick="selectUnselect(this,2);">matematica
<input type="checkbox" id="inglese" onclick="selectUnselect(this,1);">inglese
<input type="checkbox" id="francese" onclick="selectUnselect(this,3);">francese
<script language="JavaScript" type="text/javascript">
<!--
//----- Riempire select
i = 0;
while (arrPersone[i][0] != "fine") {
 j=0;
 while (arrPersone[i][j] != "fine") {
  var curOption = document.createElement("OPTION");
  mySelect.options.add(curOption);
  curOption.innerText = arrPersone[i][j];
  curOption.value = i;
  j++;
 }
 i++;
}
//-->
</script>
</body>
</html>