Can't get I2C to work on PIC32 ("skips" bytes/hangs)
Some observations:

1) You're blindly calling StartTransfer(FALSE) without checking to see if the start condition was successful (it should return TRUE if it was - if false, you shouldn't send anything until the bus is clear and the start is valid.)

2) After you send the address out, you're not checking to see if it was acknowledged before sending the data byte out. You need to make sure the address is acknowledged before taking any further action - if it isn't, you need to send a stop.

3) Replace the canned library calls with direct SFR manipulation (i.e. write and read directly to the I2C peripheral SFRs) - the library code often has nuances that aren't immediately obvious and since source isn't available, you don't have an easy way to troubleshoot the issue.