What does it smell like? Does his hair/head smell, too? Do the rest of the sheets smell? Does he eat a lot of onions, garlic, or any other foods that would come out of his pores? Have you tried switching his actual pillow? Maybe the smell is coming from the pillow itself or is reacting to his sweat or something. Has he tried changing his shampoo?
The sickly yellow color sounds like drool marks. Does he have bad breath? Maybe using a mouthwash before bed would help if it is drool?