Simple series resistors (say 47R) offer the benefit of providing some protection while being almost as cheap as no protection at all. 47R series + external schottkys to rails was used in Terasic's DE2 development board, for example, which we used extensively.
These small resistors protect from short circuits which IMO are the most probable way of killing IO on the "lab table". They also may protect from overcurrent damaging things through substrate diodes when you accidentally put a voltage on an IO pin of turned-off device - they also protect from small overvoltages such as 5V on 3.3V input, by limiting the IO cell diode current.
They won't properly protect from ESD, or severe overvoltages. But these resistors are almost free, and they prevent ringing of fast output signals by working as series termination, without slowing down the signal too much.