Scusa, ma non dovresti usare htmlentities() quando stampi le option della select?
html_entity_decode() lo usi dopo per "decodificare" il carattere in html...

O mi sto sbagliando?

Addendum: la codifica della pagina è UTF-8 vero?