Prueba con esto:
Código PHP:
<select name="canal" class="selectsFormacion" id="select2" onChange="window.open('?canal=' + escape(document.form1.canal.value) + '&provincia=' + escape(document.form1.provincia.value) + '&id=' + <? echo $userArray["id"];?> , '_self')">
<select name="categoria" class="selectsFormacion" id="select8">
<?
$res = mysql_query("SELECT * FROM categorias WHERE canal='$canal' ORDER BY categoria") or die (mysql_error());
if (mysql_num_rows($res) > 0) {
//si hay resultados.
while(list($idcategoria,$categoria) = mysql_fetch_array($res)){
echo "<option value='$categoria'>$cagegoria</option>";
}
}
?>
</select>
Si no te funciona, coloca la salida HTML que está generando o de preferencia, un enlace a tu página.