I'm Glad that you liked my trick with the diode in the power line to drop the 5V to 4.5V, I really had fun thinking that up, and I found it really works well.
Thats said, I have a few remarks about a resistor divider. addressing each point in your comment.
- You have to get the resistor relation right, or it either (potentially) does damage or does not work
The range of divisions that work are really quite large! But obviously a divider only works to
lower the voltage, so it only works from say 5V to the 3V3 input level. I'm told that about 2.6V is the PI's lower input level, so any division that divides from 5V to the range between 2.6 and 3.3V will work! So even when you use two exactly the same resistors (50% lower) than it almost works. But I normally simply use 3K3 and 2K2 as these are E12 range resistors and the division is easy to understand, (3.3 + 2.2 is 5.5) so 5.5V will divide to 2.2V and 3.3V, almost exactly right, if you use 3K3 for the lower resistor then it will receive a fractional lower voltage than 3,3V (same difference ratio as 5.5 and 5.0V, so just 5% lower).
- It can slow things down too much, e.g. on the SPI bus
Not really! it's only "slower" because of the RC time of the resistors and any parasitic input capacitances of the GPIO (a few picofarad), you won't note that with frequencies lower than thousands of kilohertz.
- it is not bi-directional, only works for inputs
Not true in the sense that the 3V3 GPIO output signal can easily drive the 3K3 lower resistor high ( it only needs 1mA to do that), and normally the 2K2 resistor won't make a difference for the high input impedance of the receiver of the PI's 3V3 signal, so it will still receive 3.3V!
- it does not provide protection against higher voltages
True, a divider rated for a 5V signal will still try to put 8V on the GPIO pin if you connect a 12V signal, I suggest you don't do that!

If you think you can't prevent that from happening, put a 3V6 zener over the 3K3 resistor.