Shields are great – particularly when your opponent doesn’t have one. There’s a few ways to better model this in d20-based systems (like DnD, OGL, SRD, etc).
1. Instead of the shield’s AC bonus you can use the shield to “soak” damage. Convert the shield’s AC bonus to Damage Reduction. You become easier to hit but harder to damage. This is the willingness to take a hit on the shield.
2. Forfeit the AC bonus of the shield. Instead make a roll to “soak” the damage with the shield if you are struck. In v3.x roll vs. a DC of 10 + Opponent’s BAB + weapon specialization (and the like). The shield-wielder adds their BAB + shield specializations (and the like). Each point of success reduces the damage by an extra point.
Eg. DC is 19. Roll a total of 21. Reduce damage by 3 (19, 20, 21).
2a. Shields can be given a maximum damage they soak before they “splinter”.
Eg. a buckler might be able to soak 15 damage before it splinters (is made useless).
3. When one has a shield and the opponent does not double the AC mod.
The point here is that with a little bit of thought shield function can be better reflected in any system.
(Image from: http://etc.usf.edu/clipart/58600/58671/58671_kite_shield.htm )