The printing of your log messages to serial port could take significant amount of time and effect processing of GPIO processing. Try to remove the print from your GPIO state change processing.
You can isolate your GPIO processing to a function and call wiced_rtos_create_threat(...) to offload GPIO processing to a thread. From your application thread, you can do status printing of the outcome of the GPIO thread. For thread creation and deletion you can take a look at http://community.broadcom.com/search.jspa?q=create+delete+thread.
Another option is to detect the state changes of the GPIO by callbacks. To register GPIO to a state change callbacks you can use gpio_keypad_enable(...). There are few sample apps using gpio_keypad_enable(...) comes with Wiced SDK. You can also look at the "push2scan" a new and simple snip that starts and stops WiFi scanning or Email State Changes Of Input (Push2Email)