The BLE_ProcessEvents() function is a nonblocking call to handle any queued BLE events. Calling CyBle_ functions will normally generate x number of events (usually just one) which need to be handled. Once you've handled all of them, it will just return without doing any processing.
What are your connection parameters you are using?
Are you handling the BLE events after calling the CyBle functions?
Can you upload your project for us to check for issues?
The architecture approach I've seen that works best is:
Call BLE_ProcessEvents() from main loop;
Call other processing functions in main loop;
If there is no more events/processing to be done, then go to sleep by calling a low_power function in main;
Can you list/see what events are occurring when the process events is called?
(You will have to disable sleep mode and run a debugger connected to the device)