You have quite a few options to expand your GPIO pins.
- As Joan mentioned that you can use newer version of Raspberry Pi (Model B+ or Model A+)
- You can definitely use I2C to expand your GPIO limit.
- In addition to I2C bus you can also use SPI bus (available on GPIO) port
I2C is not limited by number of ports. I2C bus is only limited by "Bus Capacitance", max SCL frequency and a few other factors. You can connect multiple "IO Expanders" to single I2C bus. "IO Expanders" are available with different slave addresses so you can mix various types. For example TCA6424A can support 24 IOs per device and two devices can be connected on the same I2C bus to provide 48 IO lines. In addition you can use other IO expanders parts to expand your IO capability further
In addition to I2C IO expansion, you can use simple shift registers to expand your IO capabilities. You can connect multiple shift registers (as many as your software can allow) and drive them via the SPI bus. You will only limited by your software and refresh latency.
Finally you are only limited to the GPIOs that you can think of and the number that Pi can drive (IO latency). I believe if you exceed that number, you have better options than the Pi itself.