Allora la soluzione è questa:

Originariamente inviato da ntd
Ipotizzando che MM_jumpMenu faccia un redirecting corretto con l'URL specificato come value (nel redirecting i post vanno persi!) e ipotizzando che $result['id'] sia il dannato valore che tu chiami "categoria" nel secondo file, banalmente:
Codice PHP:
$categoria = isset($_GET['id']) ? $_GET['id'] : ''
Quello che vuoi fare, cioè:
Codice PHP:
echo "value='pages/gallery.php?id=".$result['id'].""&"categoria=".$result['id']."'>".$result['nome']."</option>"
è concettualmente sbagliato. Usare due GET (ossia 'id' e 'categoria') per spedire la stessa informazione (cioè $result['id']) genera solo confusione peggiorando le prestazioni. Una volta che redirigi con "pages/gallery?id=$result[id]", come fai adesso, in gallery.php puoi usare $_GET['id'] tutte le volte che vuoi, mica si consuma. Se la redirection è corretta, $_GET['id'] in gallery.php sarà equivalente a $result['id'].

Quello che mi preoccupa non è che non capisco il problema, è che non lo vedo proprio...