(note, this is still a work in progress. Initially it is aimed at chips which have LAT registers. It will be extended to cover parts which don't, such as mid-range PIC16Fxxx parts.)
Background
When you set or clear an individual bit in a port, the compiler produces either a BSF or BCF assembly instruction.
These instructions read the entire 8 bit port, change the indicated bit, and rewrite the entire 8 bit port.
That is why this is called a "read-modify-write" instruction.
If you address the PORT register, it reads the current state of the pins in the first step
If you address the LAT register, it reads the internal latch holding the current output states.
The write operation is identical for PORT and LAT.
Now think about what happens if you change two pins on the same PORT in consecutive instructions.
The second instruction is executed while the pin is still changing voltage, so the read phase of the second instruction will see the state of the pin BEFORE it started changing, and that is what will get written back to the port.
The effect is you lose the change made by the first instruction.
The speed at which the pin voltage changes is dependant upon load and capacitance on the pin.
The faster your PIC runs, the less time the pin has to change before this will affect you.