500 элементов это не много, даже для IE. Вы должны делать что-то еще, чтобы вызвать отставание.
Я только что попробовал с 500+ опциями в IE6, IE7, FF2 и FF3, и все было почти мгновенно. Я использовал этот код:
var data = [
{ text: 'foo', value: 'bar' },
// ...
{ text: 'foo', value: 'bar' }
];
var select = document.getElementsByTagName('select')[0];
select.options.length = 0; // clear out existing items
for(var i=0; i < data.length; i++) {
var d = data[i];
select.options.add(new Option(d.text, i))
}
Я бы предложил профилировать бит кода, который извлекает данные и заполняет раскрывающийся список. Что-то еще может занимать время. Например, убедитесь, что код, который «разбивает» строковое значение, возвращаемое с сервера, является точным (звучит так, будто вы выполняете там свой собственный анализ).