bo onchange jest zbugowane w IE.
Użyj combo onmousedown+onclick.
Działa pod FF i Operą, powinno pod IE. Nie sprawdzę, bo musiałbym odpalać virtualną maszynę, a to mi zamula PC.
Sprawdź i powiedz

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xml:lang="pl"
lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>AAAAAAAARGH</title>
<meta http-equiv="Content-Language" content="pl" />
<meta name="Author" content="Paziek" />
<link rel="icon" type="image/x-icon" href="./img/favicon.ico" />
</head>
<body>
<script type="text/javascript">
function $(a) {return document.getElementById(a);}//to możesz sobie skasować, użyłem tylko do przykładowego kodu, odpalanego przy zmianie selecta
var oldValue=null,firstClick=null;
function onchangeFix(e) {
if(!e) e=window.event;
var t=e.target || e.srcElement;
if(e.type==='mousedown' && !oldValue) oldValue=t.value;
else if(e.type==='click') {
if(t.value!==oldValue || oldValue===null) {//tutaj kod wykonywany w monecie kiedy wartość selecta się zmieniła
$('val').lastChild.innerHTML=t.value;//to możesz sobie skasować, użyłem tylko do przykładowego kodu, odpalanego przy zmianie selecta
$('count').lastChild.innerHTML++;//to możesz sobie skasować, użyłem tylko do przykładowego kodu, odpalanego przy zmianie selecta
}
if((e.srcElement && firstClick) || (e.target && t.nodeName==='OPTION')) {oldValue=null;firstClick=null;}
else firstClick=true;
}
}
</script>
<select onmousedown="onchangeFix(event);" onclick="onchangeFix(event);" ondeactivate="oldValue=null,firstClick=null;">
<option value="jajo">Jajo</option>
<option value="chicken">Chicken</option>
<option value="cośtam">Cośtam</option>
</select>
<p id="val"><span>Zwrócona wartość: </span><span></span></p>
<p id="count"><span>Ile razy odpalił się skrypt: </span><span>0</span></p>
</body>
</html>