The wiring looks correct.
The only thing that might be suspect is reliance on the internal pulldown. The spec sheet says that the pulldown current is typically 50uA (can be between 10uA and 150uA). That's a pretty soft pull down - equivalent to a 66K ohm resistor.
I have cases where human-body-coupled AC noise from the powerline would drive an such an input, just by bringing a finger near a switch. That is, the high impedance input node would be driven by a few volts of AC hum, and would take that as a valid input signal.
To see if this is the sort of problem you are having, try making the input node much lower impedance.
For example, you could add external pulldown resistors of, say, 330 ohms. That should make the inputs much less sensitive to noise, yet still only require 10mA from the pushbutton. You could also add 10nF capacitors to ground, if you really wanted to nail things down.
I have published a program at http://mbed.org/users/Kemp/programs/interruptin_test/ which demonstrates my problem. Basically, it sets up three InterruptIn objects for different pins, to which buttons are attached. I observe the following behaviour:
Button 1 pressed: It prints out "Button 1" every time and occasionally also "Button 2".
Button 2 pressed: It prints out "Button 1Button 2" every time.
Button 3 pressed: It prints out "Button 3Button 2" almost every time, occasionally I get lucky and it only prints "Button 3".
I have confirmed that only the pin associated with the correct button actually goes high. Can anyone confirm this behaviour on their own boards or offer a possible explanation?