I remember looking into this a while back, and I decided the best way to simulate a weapons jam was to remove the player's magazine, then add it back in again right away. This basically has the effect of "emptying" the weapon, forcing the player to "clear it" by reloading. Of course you would detect when the player shoots his weapon via an EH.
The upside to this method is that it lets the player decide when to clear the jam, instead of forcing him to do it right away via switchmove. The player doesn't see anything "funny" (like his weapon disapearing); his ammo count just drops to 0 all the sudden (of course, you can script in a message or sound indicating what happened). The mainside though, is that when you add a mag back into the player's inventory, you add a FULL mag. So if he had 1 round left in an m16 mag, when his weapon jams, he will get 29 free bullets.
This downside could be very nicely avoided if you were making an addon; you would just need to make 30 different magazines (one with 30 rounds, one with 29 rounds, one with 28, etc).
But even without that (pure script form, no addons), it still is a good compromise, IMO.