Ti consiglio di usare BOOL come datatype per la colonna attiva: sostanzialmente se attiva segni TRUE altrimenti FALSE.
Se idcategoria è INT allora non usare gli apici per inserire il numero, altrimenti rischi che si generi un errore di MySQL.
Per collegare le due tabelle ti basta aggiungere una clausola di WHERE con la relazione ID.CATEGORIA e GALLERIA.IDCATEGORIA.
	Codice PHP:
	
$sql = "
SELECT 
    categorie.nomecategoria AS nome_cat,
    gallerie.nomegalleria AS nome_gal
FROM
    categorie, gallerie
WHERE 
    categorie.attiva = TRUE AND
    gallerie.attiva = TRUE AND
    categorie.id = gallerie.idcategoria AND
    gallerie.idcategoria = ".$catgall_scom['id']; 
 
In questo modo ottieni un array di dati di due colonne, in cui la prima colonna si chiama nome_cat e la seconda nome_gal.
Il tuo problema però è un altro: quello che non ti arrivano alla pagina PHP i giusti valori passati dalla form.
Ergo, bisogna fare un po' di debug.
Riduci all'osso la form, come prima cosa:
	codice:
	<form id="form2" name="form2" enctype="multipart/form-data" name="form2" method="post" action="addgall.php"> 
<input id="nomegalleria" name="nomegalleria" type="text" id="nomegalleria" size="15" maxlength="15" />
<select id="idcategoria" name="idcategoria" size="1" id="idcategoria"> 
   <option> - Scegli una Categoria - </option> 
   <option value = 1>Prova 1</option> 
   <option value = 2>Prova 2</option> 
   <option value = 3>Prova 3</option> 
   <option value = 4>Prova 4</option> 
</select>
 
<input type="submit" name="submit2" id="submit2" value="Invia" /> 
</form>
 
Non so se hai notato, ma ho aggiunto l'entype alla form, perché sono convinto che i dati non arrivino per quel motivo!
Ad ogni modo.... nel file addgall.php, invece, scrivi quanto segue:
	Codice PHP:
	
<?php
$nomegalleria = $_POST['nomegalleria'];
$id_cat = $_POST['idcategoria'];
echo "
Nome Galleria: $nomegalleria
ID Galleria: idcategoria
";
exit;
 
session_start(); 
require("conn.php"); 
$query_catgall="SELECT * FROM tabcategoriegall WHERE attiva='1' ORDER BY nomecategoria DESC"; 
$catgall=mysql_query($query_catgall,$conn) or die(mysql_error()); 
$catgall_rows=mysql_num_rows($catgall); 
$catgall_scom=mysql_fetch_assoc($catgall); 
$query_newgall="SELECT * FROM tabgallerie WHERE idcategoria='".$catgall_scom['id']."'"; 
$newgall=mysql_query($query_newgall,$conn) or die(mysql_error()); 
$newgall_rows=mysql_num_rows($newgall); 
$newgall_scom=mysql_fetch_assoc($newgall); 
if (empty($_POST['nomegalleria'])) { 
header("Location: modulo_inserimento_dati.php?errore=1"); 
} else { 
$query_innewgall="INSERT INTO tabgallerie (nomegalleria,idcategoria) VALUES ('".$_POST['nomegalleria']."','".$catgall_scom['id']."')"; 
$innewgall=mysql_query($query_innewgall,$conn) or die(mysql_error()); 
header("Location: admin.php"); 
} 
?>
 
In questo modo cerchiamo di capire se le variabili arrivano tutte allo script che le processa.
Fai le prove con valori diversi, sia nel campo di testo, sia nella select.
Fammi risapere!