I've had to deal with this twice before.
Both times it seemed to be more a lack of washing of clothes rather than themselves.
First one was easy because we had a very strong suspicion it was his clothes. Casual conversation went along the lines of "How many days wear do you get out of a shirt?" When the answer came back 2 or 3 it was quite easy to follow up with "we do long hours in here, one day to us is like two days in a normal office, best to stick on a clean shirt every day, looks better to others/clients". He then revealed that he only had two shirts(!). This was a trainee, so he probably hadn't built up a wardrobe of work clothes yet, but he was being paid upwards of £30k, so no excuse really. He went out that day and bought a load of shirts and we didn't have a problem after that.
Second one was much harder. It was a guy who'd been struggling with workload and stress. I passed it up to a partner initially because I was a bit worried whether i'd be able to handle it correctly, but after a while we agreed that a partner doing it would probably be a bit too much for him (I still reckon this was my bosses passing the buck though!). Kept the conversation light, just basically asked a similar question again of how often he washed his shirts (i thought this was less of a blow than suggesting he didn't clean himself. He got where I was going with it straight away. Apparently he was struggling to get up in the mornings and running late due to not sleeping well at night because he was so stressed/worried. This meant not showering every day and sometimes not having a clean shirt ready, added in with being anxious/stressed all day and sweating more than usual.
Poor guy, one of the worst conversations I've had with a colleague. BUT, his BO probably saved his career and sanity, since the anxiety/stress he was feeling was much worse than the partners had thought, so there was a really focused effort to get him back on track. Which seems to have worked, although I've not seen him in a while.