Me acabo de fijar que cualquier cosa pasada por GET o por POST la devuelve como string, si metes un número devolverá un string conteniendo esos números, entonces se me ha ocurrido una expresion regular que examine que solo tenga números.
Código PHP:
if(preg_match("/^[0-9]+$/", $_GET['id']) != 0){
echo "Valido";
} else {
echo "No Valido";
}
Si quieres usar el método de IF puedes usar la expresion, el otro método de poner (int) sigue siendo igual de válido y es completamente funcional, el problema es que no hay método para avisarte.