Para mi, el que los campos que indiqué no estén enlazados en la consulta, si explica los resultados "erróneos" obtenidos. ¿Cómo sabe el motor qué registros de una y otra tabla extraer, si ambas no están enlazadas en la query en cuestión?
En este caso concreto, sabe que tiene que extraer los registros de la tabla galerias por:
ON galerias.NOMBRECATEGORIA='$id'
pero no de la tabla categoria (y entiendo que por tanto sacará todos los registros de la misma. De ahí la repetición de los mismos).
Justo lo contrario sucedería si en vez del ON anterior, fuese:
ON categoria.NOMBRE_CATEGORIA='$id'
extraería los registros correctos de la tabla categoría y todos los registros de la tabla galerías.
Por tanto, consultas tales como:
SELECT
DISTINCT galerias.IDGALERIA,
galerias.TITULO,
galerias.DESCRIPCION,
galerias.NOMBRECATEGORIA,
galerias.FKCATEGORIA_ID,
DATE_FORMAT( galerias.FECHA_ALTA, '%d/%m/%Y' ),
categoria.IDCATEGORIA,
categoria.NOMBRE_CATEGORIA
FROM
galerias INNER JOIN categoria ON galerias.NOMBRECATEGORIA = categoria.NOMBRE_CATEGORIA
AND galerias.NOMBRECATEGORIA = '$id';
SELECT
DISTINCT galerias.IDGALERIA,
galerias.TITULO,
galerias.DESCRIPCION,
galerias.NOMBRECATEGORIA,
galerias.FKCATEGORIA_ID,
DATE_FORMAT( galerias.FECHA_ALTA, '%d/%m/%Y' ),
categoria.IDCATEGORIA,
categoria.NOMBRE_CATEGORIA
FROM
galerias INNER JOIN categoria ON galerias.NOMBRECATEGORIA = categoria.NOMBRE_CATEGORIA
WHERE
galerias.NOMBRECATEGORIA = '$id';
SELECT
DISTINCT galerias.IDGALERIA,
galerias.TITULO,
galerias.DESCRIPCION,
galerias.NOMBRECATEGORIA,
galerias.FKCATEGORIA_ID,
DATE_FORMAT( galerias.FECHA_ALTA, '%d/%m/%Y' ),
categoria.IDCATEGORIA,
categoria.NOMBRE_CATEGORIA
FROM
galerias, categoria
WHERE
galerias.NOMBRECATEGORIA = categoria.NOMBRE_CATEGORIA
AND galerias.NOMBRECATEGORIA = '$id';
y equivalentes, mostrarán los resultados deseados.