JavaScript distingue entre mayúsculas y minúsculas en los nombres de las variables. Tienes User modelo y el User resultado con el mismo nombre.
Su código funcionará con el siguiente cambio:
User.findById(id , function (err, user) {
/* ^ use small `u` */
if (err) return handleError(err)
/* rest of your code */
También tenga en cuenta que más adelante en su código está declarando otra variable llamada user . Deberá cambiar eso a algo diferente.