Hola prueba la clausula DISTINCT :
Código:
SELECT DISTINCT preguntas.Idpreguntas,preguntas.Descripcion FROM preguntas,preguntas_categoria,registro WHERE preguntas_categoria.Idpreguntas=preguntas.Idpreguntas AND preguntas.Idnivel='$niv' AND preguntas_categoria.Idcategoria='$cat' AND preguntas.Idpreguntas<> registro.Idpreguntas AND registro.Idsesion='$idses' ORDER BY RAND() LIMIT 1
Saludos