I wanted to share with you that my youngest child (now almost 6) had some major speech impediments when she was younger. Two years ago, strangers couldn't understand her. I spoke with a friend of mine who is a speech therapist specializing in this stage of development, and she assured me that many speech problems go away on their own by the time children are 6, AND that evidence shows that it doesn't even really help to do speech therapy in kids younger than 6 for most issues. My daughter had trouble with the n, m, r, l, sh, sp, th sounds. What we did to try and help her was to sit in front of a mirror with her a few minutes every day and say a word (spot, speck, special, spaghetti - to show her how our mouths looked when we made the "sp" sound, for instance). She would repeat after us and she could see the shape her mouth was making, and then we would say something else, and make a game out of it. I have no idea if it helped or if she just grew out of it on her own, but she speaks very clearly now, and is ahead of her age in school. Speech development is not a result of being a great parent, nor is it a reflection on the intelligence of the child. It's just something that comes with time.
Don't let this situation get you down. Children are not perfect, and we don't expect them to be! And guess what, there's not a mom among us who is perfect either! We just have to do the best we can to help our children. You are doing a great job and your son knows that. Hang in there!