What is wrong with this PIC pin change detection?
You're using a compiler, so you have no idea how many cycles that polling loop takes.  In assembler you could get it down to 3 cycles, but you gave up the right to count cycles when you wrote the code in a high level language.

However, the real problem is the overall approach.  Asking the code to catch a short glitch is not a good idea.  Even if you could guarantee the loop time is less than the glitch time, you can now not turn on interrupts during the wait.  This may present architectural problems later.

A much better idea is to use the hardware you already have to catch the glitch, then have the firmware check that hardware.  The simplest would be to wire the glitch into one of the INTx lines, then look for the INTxIF flag.  Change detect pins would also work, but keep in mind the flag gets set on both edges and you have to clear the mismatch to clear the condition.