La cadena que forma el SQL es $sitios y si haces la consulta antes de la condición pues siempre ingnorará la categoría; además si el id de la categoría es numérico, supongo, entonces debería quedar así:
Código PHP:
$sitios = "SELECT * FROM sitios WHERE keywords LIKE '%$_POST[referencia]%'";
if(!empty($_POST['categoria'])) $sitios .= " AND categoria = $_POST[categoria]";
$extraer = mysql_query($sitios);
prueba y nos comentas