I2C is a nice way to go, unless all devices that you need to communicate with do not have it. In that case, SPI is the winner as bit-banging will get you there. SPI is a simpler convention as it has just shift registers and a clock. I2C is somewhat (may be an understatement) overly complex. Heck, philips new CD-R drives don't even use it anymore.
Another problem is that I2C is patented, meaning you must obtain a license from Philips if you intend to market your design (this was true as of a few years ago, I believe it still is so). Not so with SPI. The nice thing about SPI is that you , if you're good with PLD's or FPGA's, you can roll your own custom SPI solutions. I have not reached that level of conciousness yet, but soon perhaps.
Also if you plan a multi-master system, steer clear of I2C, it WILL be messy.
I2C can hog the CPU, mainly in a MM system though.
All of this is not to say that I2C is complete crap. It certainly is not. It can be a bit more difficult than you think. If there is an option besides I2C, take it.
The main attraction to SPI, for me anyhow, is the roll your own possibilities, like using a couple of 8-bit universal 3 state SR's to make a 16-bit I/O port.
I'll sum it up by saying, "SPI won't make you cry".
I hope you all don't think I'm a wack with venom dripping from my fangs getting all worked up about I2C. I just needed to vent, that's all!
Don't base your project on my opinions presented here, be sure to do some research as well. Sometimes I'm wrong, and may even be wrong (or wrong-headed) in this case

.
Have fun,
Foxfur