Suddenly my iPhone 4S has stopped sounding a ring tone with an incoming call. It vibrates. The settings app is set correctly as far as I can tell and the volume is on. What's wrong??
Check the mute button on the left side of the phone over the volume rockers if you see Red then it's muted if not then do a hard reset by holding the power and home button down till the screen goes blank and restarts
If you don't see orange also make sure of the obvious that the volume is turned up, if so then follow what Kataran gave you.
After rereading your post make sure the ringtones are working by trying some of them, If so go ahead and do as I mentioned that Kataran suggested.
Have you dropped or damaged your phone? I ask because my 4S speaker stopped working also. I think my son dropped it too much. Its not a big deal for me since my 5S is my daily driver so I haven't tried to get it fixed but you may be able to get a replacement if you have AppleCare+.