This is a variation of the rules presented in Your Shield Is Your Friend, which in turn incorporates rules found in articles by other writers (Shield Saves and Shields Shall Be Splintered):
All shields improve armor class by 1 vs. mêlée and missile attacks.
All shields enable the wielder to attempt to block successful attacks by making a saving throw. Fighters roll their most favorable save; non-fighters roll their least favorable save. A successful save blocks the attack and deflects the damage. Blocking can only be attempted if the wielder is both aware of the attack and in a position to defend against it.
The number of mêlée attacks that can be blocked depends on the size of the shield. Small shields can block one attack per round; medium shields can block two attacks per round; large shields can block three attacks per round. A saving throw must be made for each blocking attempt.
The number of missiles that can be blocked also depends on the size of the shield. Each successful save blocks all of the missiles that would otherwise strike the wielder in a single round. A failed save blocks none. The size of the shield determines the penalty to the saving throw. Small shields can block missiles at a -2 penalty per missile; medium shields can block missiles at a -1 penalty per missile; large shields can block any number of missiles without penalty.
The defender may opt to sacrifice the shield instead of rolling. The defender suffers no damage, but the shield is destroyed by the attack. This tactic may also be used against area effect attacks such as dragon breath, fireballs, lightning bolts, etc.
Shields of normal construction are no defense whatsoever against ballistae, catapults, trebuchets, cannon, or firearms.
[Edit: See Concise Shield Rules for my current perspective.]