This may be redundant; but SproutCore gives you input elements made up of images, not native HTML elements. There are probably other frameworks that do similar things.
The main idea is to create a div or something, as CrazyJugglerDrummer suggests, and impose click handlers on it. Handlers tweak the animation to simulate a select element. And when one of your pseudo-select elements is selected, you use JavaScript to send this value to the actual selection or input element that is hidden.
source share