Cómo verificar si un usuario existe por un ID determinado
Recomiendo encarecidamente la solución mucho más sencilla de Daniel sobre la que actualmente está seleccionada como correcta:
$user = get_userdata( $user_id );
if ( $user === false ) {
//el ID de usuario no existe
} else {
//el ID de usuario existe
}

Me gusta más esta opción que crear una función propia solo para esto. En mi caso, de todos modos tenía que trabajar con los datos de usuario así que... +1

En este caso, definitivamente no usaría get_userdata( $user_id ) ya que retorna un WP_User, lo que lo hace más costoso en recursos que una consulta personalizada.
Sobre la consulta, estoy de acuerdo en usar el método prepare, pero SELECT COUNT(*) significa que estás retornando todas las columnas, lo cual es innecesario aquí.
Recomendaría usar SELECT COUNT(ID) en su lugar, de esta manera solo trabajamos con una sola columna, lo que será más rápido.
Otro aspecto sobre la sentencia de retorno, sería más legible con una Lógica Ternaria como:
return 1 < $count ? true : false;
En resumen, lo hubiera implementado así:
function user_id_exists( $user_id ) {
global $wpdb;
$count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(ID) FROM $wpdb->users WHERE ID = %d", $user_id ) );
return empty( $count ) || 1 > $count ? false : true;
}

Solo para tu información, SELECT COUNT(*)
y SELECT COUNT(ID)
ambos devuelven una sola columna... un conteo.

Si el rendimiento es una preocupación, utiliza:
function user_id_exists($user_id) {
global $wpdb;
// Verificar caché:
if (wp_cache_get($user_id, 'users')) return true;
// Verificar base de datos:
if ($wpdb->get_var($wpdb->prepare("SELECT EXISTS (SELECT 1 FROM $wpdb->users WHERE ID = %d)", $user_id))) return true;
return false;
}
De lo contrario, usa get_userdata($user_id) !== false
. La llamada a get_userdata
recuperará una fila completa de la base de datos en lugar de un solo valor, creará un nuevo objeto WP_User y lo almacenará en caché si tiene éxito.

Usa esta función:
function user_id_exists($user){
global $wpdb;
$count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->users WHERE ID = %d", $user));
if($count == 1){ return true; }else{ return false; }
}
Uso:
if(user_id_exists(1)){
//existe
} else {
//no existe
}

también puedes usar este método: $user = get_userdata( $user_id );
if ( $user == false ){
//el ID de usuario no existe
} else {
//el ID de usuario existe

Algo que hacen algunos hackers (lo sé porque fui víctima de esto al menos una vez) es visitar tu sitio usando este tipo de URL:
domain.com/?author=0
domain.com/?author=1
etc.
En un intento exitoso, la salida del sitio tendrá datos válidos, además el nicename del usuario estará en el contenido del sitio web y el apodo también puede aparecer (dependiendo de la salida de las páginas).
En un intento inválido, el sitio irá a la página 404 (o lo que esté configurado para ocurrir en un error de página no encontrada).
Puede ser bastante trivial construir un script usando cURL que pruebe desde, digamos, author=0 hasta author=999 en un tiempo relativamente corto y genere una lista de nombres de usuario. Un hacker hizo esto con uno de mis sitios y luego intentó iniciar sesión en cada usuario usando otra lista de contraseñas populares.
Como puedes imaginar, la primera vez que esto ocurre es un poco aterrador ver que alguien puede descubrir fácilmente todos tus nombres de usuario. Por suerte para mí, las contraseñas fuertes salvaron el día esa vez, estoy seguro de que no todos tienen tanta suerte.
He probado esto en un par de sitios web importantes (que permanecerán anónimos en esta publicación) y parece que puede que no haya nada que nadie pueda hacer hasta ahora para evitar que esto ocurra. Personalmente, creo que es un riesgo de seguridad que WordPress debería solucionar.
ACTUALIZACIÓN:
Aquí en el futuro (principios de 2016) ahora sé que hay métodos/plugins que pueden frustrar este ataque de enumeración de usuarios. Además, he cambiado mi postura sobre el riesgo de seguridad de esto y ya no creo que WordPress deba cambiar esto.

Prueba esto para que no te muestre la advertencia como Falta el argumento 2 para wpdb::prepare()
function user_id_exists($user_id){
global $wpdb;
$count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->users WHERE ID = %d",$user_id));
if($count == 1){ return true; }else{ return false; }
}

Esta función que estoy usando no necesariamente cambia cómo se obtiene el conteo de las otras respuestas aquí, simplemente simplifica el retorno como un valor booleano comparando estrictamente el conteo con 1.
/**
* Determina si un usuario existe basado en su ID de usuario
*
* @global wpdb $wpdb Objeto de abstracción de la base de datos de WordPress.
*
* @param int $user_id El ID de usuario de WordPress a verificar.
*
* @return bool Verdadero si el ID de usuario existe, falso en caso contrario.
*/
function user_id_exists($user_id)
{
global $wpdb;
return 1 === (int)$wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->users WHERE ID = %d", $user_id));
}
