Hi Nick,
You schematics looks fine for me and it should work as is, as long as values used for pull-up resistors on the I2C lines have a correct value (something like 4k7 works well in general). But they should be ok, since you have already succeeded in reading the inputs state.
Having personally struggled with the same kind of problems (not only in the NXT world, but in robotics and electronic projects I could work on), I ended up making me a favor by buying this
kind of tool. Believe me, it largely deserves the bucks for it and in addition will allow you to explore the arcane of various protocols and buses behaviors. Using it to monitor your I2C lines will easily tell you if the NXT is sending the correct frames to the PCF when you try to change the LEDs status. This tool is not a simple oscilloscope but it will decipher various protocols (serial, I2C, SPI,...) and display in clear the values corresponding to the signals.
I'm in no way affiliated to the company which makes this analyzer, and there are other similar products on the market. I'm just a very satisfied user, since it has saved me hours of debugging, and also allowed me to understand better details of how things work, even in my professional activities.
Best regards and hope you'll find the solution of your problem quickly.