loq ue pasa es que te faltana las etiquetas form estas en cierran cada campo, ya sea input, select, textarea, etc. es como decir que captura los campos los empaqueta y los envia, todo esto claro tu no lo ves.
aqui te dejo un ejemplo: 
 Código HTML:
 <html>
<body>
<?=$txt_cambiarIdioma?>
<form>
    <select onchange="document.location = '<?=$_SERVER['PHP_SELF']?>?idioma=' + this.value"> 
        <option><?=$txt_idiomas?>
        <option value="ca"><?=$txt_catalan?>
        <option value="es"><?=$txt_espanol?>
        <option value="en"><?=$txt_ingles?>
    </select>
</form>
</body>
</html>  PD:Tambien se te olvido cerrar la etiqueta select ;), y recuerda que lo que te correji es solo html