A Zener diode is a poor protection method. Without going into too much technical detail the response is too slow, and the tolerance of most Zeners is too wide to provide adequate protection and you need a series resistor which can compromise performance. If you are going to apply 5v no reasonable circuit will help.
A diode clamp to the 3.3v rail is far better, but still won't protect from severe abuse. This is the technique most engineers would use to protect from transient overload in a "noisy" environment.
Your question implies protecting inputs - what about outputs? What about pins configured as outputs when you are expecting inputs (or vice versa).
The most important consideration is ensuring earth bonding. Make sure any external circuit and the Pi share a common earth. More circuits have been destroyed by floating earths than anything else.
If you want to provide reasonable economic protection use buffers. The Gertboard is an excellent example. Even if you don't want to use a Gertboard you could copy his interface design. (Gert is a top design engineer).