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>