Може би само това.
Не мисля, че имате нужда от .populate('latestPost')
като следващия ви .populate()
трябва да се погрижи за попълването на latestPost
. Може би това пречи на следващия.
User.findOne({ _id: req.user.id }).populate({
path: 'latestPost',
model: 'Post',
populate: {
path: 'author',
model: 'User'
}
}).exec(function (err, user) {
});