Using internal pull-ups for I2C on PIC18F
Don't use internal pull-ups for I2C.  Use external resistors.
In other words, it's a design error when you attempt to use internal pull-ups for I2C (pretty much on any microcontroller).

The datasheet says that internal pull-up current is 50μA min and 400μA max.  First, look at the huge variability of the pull-up current.  Second, even 400μA is too weak for I2C.  Even a 2.5kΩ resistor with Vcc=3.3V would generate a 1.3mA pull-up current.  

Related threads:
What happens if I omit the pullup resistors on I2C lines?  The O.P. was using internal pull-ups without knowing it.  Illuminating oscilloscope plots in that thread.
Is there a correct resistance value for I2C pull-up resistors?