I have also heard that there are issues with I2C on pics. If that was the case, I'm sure that later pics would have any problems ironed out.
As for setting pins to input, the I2C pins have to be open collector outputs with a pull up. This is so multiple devices can pull the pin low and makes collision detection possible - if you are transmitting a 1 bit and see 0 on the pin then a collision has occurred. If you set the pins to output then they will be driven high/low instead of open circuit/low. You have to do the same (set to input) for the TX pin of RS232 even though that is a "proper" output.
The problem is, it is going to be PAINFUL developing code for the master if I don't have a working slave, i.e. I won't know which one isn't working. So any code that uses the hardware MSSP would be greatly appreciated
I'm working on the Master and Slave as we speak so I will post up code I've done and hope a kind sould will help me sort it out...I2C isn't complicated, but having a handful of registers to deal with, 4 - 5 interrupts to manage...it gets a bit out of hand...
Do you not have access to a I2C device such as a eeprom that you could use as a slave. Alternatively, Hitech have a sample of bit banged I2C that is master only. Either would give you one end.