September 2017 update
For a more current solution, check out Tessa's improved answer below. This response is from almost 5 years ago, so there have been some changes since. The original content remains here for reference purposes.
Original solution
This code is closer to what you're looking for:
To gray out the entire SELECT element when closed and then restore color to all OPTION elements while keeping the first one grayed out, use the following CSS:
CSS
select {
color: #ccc;
}
option {
color: #000;
}
option:first-child {
color: #ccc;
}
Update
HTML
<select onchange="changeMe(this)">
<option selected disabled>Please select your favorite fruit</option>
<option>Apple</option>
<option>Banana</option>
</select>
Javascript
<script type="text/javascript">
function changeMe(sel)
{
sel.style.color = "#000";
}
</script>
I've updated the jsFiddle with this code. You can view it here: http://jsfiddle.net/s5Xy2/5/
Also, please note that I made changes to the HTML part by adding the "disabled" attribute and adjusting the "selected" attribute accordingly.
If you prefer the pure CSS approach, it's available here: http://jsfiddle.net/s5Xy2/4/