Using a 5v PIC talking to a 3.3v device via I2C. Is it safe to simply tie I2C pullup resistors to 3.3v rail or should I use full on bi-directional logic level convertor?
Typical value for minimum input high voltage for I2C pin of 5V PICs is 0.7*Vdd =~ 3.5V @5Vdd. Even with reduced Vdd=4.4 V and threshold about 3.1V the more "upper space" is needed due to RC slope.
But simple answer - I2C module is intended to work with pull-ups to Vdd supplying this module so converter is needed.
You can use this bi-directional level shifter from Sparkfun. It's basically from the NXP app.
http://www.nxp.com/documents/application_note/AN10441.pdfI doubt that this circuit is an NXP invention though.
In case of missing n-MOSFETs close at hand they can be replaced by NPN transistors with additional serial resistor in base.
Specialized level converters for I2C are more speedy and could have signal conditioners built-in. So there is no universal suggestion what to use.