Hola acabo de ver rapidamente tu código y veo que no veo algo

y es la consulta desde la cual generas los limites de la consulta.
yo esperaria ver algo por el estilo y explico rapidamente
$inicio=Es la que va a indicar el limite donde empieza la busqueda de la base de datos (es decir si va de 10 en 10 entonces tendria que tomar valores de 1,11,21,etc)
$tamano pagina=es decir el numero de registros por pagina;
$numeronoticias=el total de registros;
$totalpaginas=el numero total de enlaces con los que se hara el paginador
$pagina=el numero total de enlaces.
Igual este es solo un ejemplo toca ajustarlo al paginador tuyo, pero es para revisar si se esta haciendo algo similar o no.
Código PHP:
if(!$pagina){
$inicio=0;
$pagina=1;
}
else {
$inicio=($pagina-1)*tamanoPagina;
}
$consulta="SELECT * FROM tabla WHERE condicion=".$condicion."ORDER BY columna;";
$hacerconsulta=mysql_query($consulta,$conexion);
$numeroNoticias=mysql_rows($hacerconsulta);
$totalPaginas=ceil($numeronoticias/$tamanoPagina);
$consulta="SELECT * FROM tabla WHERE condicion=".$condicion."ORDER BY columna LIMIT".$inicio.",".$tamanopagina;
$hacerconsulta=mysql_query($consulta,$conexion);
Por favor verifica con un echo que todos los GET estan llegando bien y toman los valores que deben de tomar. Por el ejemplo que muestras la consulta es bastante compleja, pruebala por aparte y verifica que con los valores correctos si toma un valor, porque si igual el valor de la consulta es igual a cero, el paginador no va a tomar nada.
Espero que con esto ya puedas arreglar el problema. Mi recomendación personal es ir mirando el codigo paso a paso porque si el error esta en un paso intermedio de nada sirve modificar si no se ha revisado que lo anterior funcione bien.