ripensandoci ancora, forse può bastare una cosa del genere
codice:
<script type="text/javascript">

function remove(box) {
  for(var i=0; i<box.options.length; i++) {
    if(box.options[i].selected && box.options[i] != "") {
      box.options[i].value = "";
      box.options[i].text = "";
    }
  }
  BumpUp(box);
} 

function BumpUp(abox) {
  for(var i = 0; i < abox.options.length; i++) {
    if(abox.options[i].value == "")  {
      for(var j = i; j < abox.options.length - 1; j++)  {
        abox.options[j].value = abox.options[j + 1].value;
        abox.options[j].text = abox.options[j + 1].text;
      }
      var ln = i;
      break;
    }
  }
  if(ln < abox.options.length)  {
    abox.options.length -= 1;
    BumpUp(abox);
  }
}

</script>

<form>
<select multiple="multiple" name="lista">
<option value="one">one</option>
<option value="two">two</option>
<option value="three">three</option>
<option value="four">four</option>
<option value="five">five</option>
<option value="six">six</option>
</select>

<input type="button" value="cancella selezionati" onclick="remove(this.form.lista)" name="b1">
</form>