Warning: Now for my own dire warning: While the statements made here are likely correct and represent long-standing best practices in the electronics industry, they may be wrong. So everything I say here may be wrong and if you do damage as a consequence of believing me, I am not responsible.
Well, onwards with the analysis. First, you need to know that digital inputs need to have protection or they will die in normal operation. The reason is that switching of neighbouring signal lines can induce voltage spikes way above Vcc and way below GND. The inputs need to be able to survive that.
The standard way is to just put in protection diodes. Unfortunately the Pi seems to only have normal protection diodes to GND, not to 3V3. What I found in some measurements is that the protection against positive overvoltage seem to be some kind of passive Z-Diode-like scheme. I measured about 6.4V Voltage at 100uA input current and 7.5V at 0.5mA on several differtent inputs, regardless of whether the Pi was switched on or off. At 5.5V input voltage, I measured about 2.4uA input current.
This is in line with the typical protection circuit for a 5V-tolerant I/O pin. I cannot confidently state that without a look into the (missing) datasheet that GPIO on the Pi is really 5V-tolerant. It could be untested, or defective by design or manufacturing. What I can say is that on my Pi, connecting an input in input mode directly to 5V would not kill it, the currents flowing are just way too small.
Update 12/2013: Apparently parts of the Pi community are very much concerned that I do not know what I am takling about and that the approach I present here will kill the I/O-pin. See Raspberyy Pi Forum for a discussion. While unlikely, it is possible that the manufacture included defective I/O circuits and protection in the SoC used in the Pi. Now, there is a statement by "Liz", that 4.3V would be fine, see Liz on 5V I/O. For that reason, I have added the missing upper protection diode externally and now this circuit should really be unable to kill the I/O pin as the voltage at the I/O-pin with the diode will in not exceed 4.3V unless you put in much more than 5.5V. The diode does not impact functionality and the I/O pin remains fully bi-directional. BTW, the pull-up and pull-down circuits I give on GPIO Startup are not affected, there the I/O pin is already at or below 4.3V, so no need to add a diode.
I also have to say that I found the level of actual skill and knowledge in that forum rather low, and the level of arrogance rather high, with wrong and partially wrong "information" being pushed aggressively by some wannabe "alpha posters". There seems to be no interest into actual insight either, but rather people are defending imagined "truths" instead, which makes the forum pretty dysfunctional. Hence, I would advise not to trust anything said there without independent verification.
Note: This does not apply to the two I2C pins that have pull-up resitstors on the board, they need a proper I2C level-shifter. More below.
Effect: This will in effect make the pin 5V-tolerant for digital I/O and will work as long as the 5V circuit interfaced does not have more than 1 LS-TTL load input current. That means it will work for for most CMOS circuits, like the MAX1226 SPI A/D converter. It will also work for basically all TTL-compatible CMOS logic families like 74HCT, 74ACT, 74LVC, etc. The thing to look for in the datasheet is the minimum input H voltage, typically called V_IH. it should be at or below 2.4V for this to work reliable.
For CMOS-level digital signals, where the Pi GPIO pin is used only as input, you can still use this scheme. But driving CMOS-level inputs from a Pi GPIO pin used as output is at the very least unreliable, as these inputs need 3.3V for a solid H, and that is difficult to generate from a 3.3V supply. Here, you need a proper dual-voltage level-shifter, such as the one described for I2C below or you need to add a pull-up resitor of 1 kOhm to 5V. Fortunately, digital circuits requiring CMOS-level input signals are rare today.
Note that this is why you cannot use the 1kOhm technique with TTL inputs having a higher load. For example, a standard TTL input has up to 1.6mA flowing out of in on a L, which would push the input voltage it sees up to about 2V and right into the forbidden zone. (Yes, bipolar TTL inputs have an output current when an L signal is applied. The explanation why is out of scope of this document.)
If you use the two I2C GPIO pins as normal outputs, you can still use the 1kOhm design, but it fails for input and I2C mode. For that you need a bi-directional level shifter.
The authorative reference is by NPX (used to be Philips), described in this Applicatio Note. (NPX seems to not have it online anymore. Thanks to Adafuit for providing a copy!) The SMD FETs are a bit tricky to handle, but you can roll your own level shifter following this document. You can also get them pre-assembled, e.g. from Sparkfun, just search for "Logic Level Converter". Make sure to connect the higer voltage to "HV" and the lower one to "LV" and use only the "TX" conections, the "RX" ones are not bi-directional.
Also note that these level-shifters are relaticvely slow, and can add 100ns delay or more. For I2C with a maximum clock rate of 400kHz, that is fine. But shifing a fast SPI bust this way is unlikely to work or may not be reliable.