Hi!
The above SX1509 BOB from Sparkfun still stands tall I think, but there are lots of cheaper solutions as well.
It all depends on your requirements:
Do you need analogue, digital or both?
Have many pins / channels do you need?
Do you need input, output or both?
Need interrupts on input pins?
I recently came across the PCF8574 which is a quasi bi-directional I2C controlled digital only 8 bit I/O expander with interrupt capabilities. It's really simple to use, very general purpose and I've written a generic driver class for it and an I2C bus manager.
You can find the code in this post where I use it to drive a 16x2 character LCD in 4 bit parallel mode: