K.P.
I babysat a 3-y/o that had a speech problem similar to that. Part of his problem was that his parents enabled him not to say full words. [They talked "baby talk" to him even after he should have been speaking more normally - for instance, they thought it was cute that he called a lawn mower a "maw mo'er" when he first started talking, so that's what they called it even at 3 y/o and that's what he thought it was! When I started babysitting, I called things by their actual names, and his speech improved.] Another part of his problem was that he had had multiple ear infections that temporarily damaged his hearing so that he wasn't hearing well, and therefore wasn't hearing/understanding all the sounds, so couldn't reproduce them.
When I started babysitting him, he was in speech therapy, but to be honest, I think the main improvement in his speech was talking to him and interacting with him at a more advanced level -- instead of me talking baby-talk to him, I spoke to him using real words, and had him repeat them after me quite frequently. [And his parents sort of picked up on that too, which I'm sure helped since they were with him more than I was. It was almost as if they didn't realize how they were enabling him to continue in baby-babble until I was in their home *not* doing it.]
One thing you can do, that helped this boy and also my own kids when they were little and still trying to figure out how to say all the sounds fluently, is to exaggerate the sounds -- Ssssssssssam, fffffffffffffffffish, etc. - and have your son repeat after you.