I've had this issue before when I've made pong. It's because of the speed of the ball.
It's kinda hard to illustrate this without a diagram, but I will try since I don't feel like drawing something.
Okay, let's say your paddle is 8 pixels in width, and your ball is the same. But the speed is set at something like 2 pixels per refresh. (every time the screen updates, it moves two pixels).
Well, when using dbSpriteCollision(), it checks to see if the bounding boxes are colliding. And what I can gather from your collision code, is that if the paddle collides with the ball, it makes the speed negative.
The issue is that sometimes, you may move the paddle (like trying to make a save), so that it touches the edge. And when this happens, it gets "caught". How I mean this, is take a look at the width's of the paddle and ball sprites (8 pixels as we set up earlier), yet the speed variable is only 2. So if you turned off the collisions, it would take about 4 screen refreshes for the ball to pass through the paddle.
Using that math, lets say that you make a save and the Ball's X position collides with the paddle about 5 pixels in. The collision code will kick in and tell the program to reverse the direction of the ball (a.k.a. "iBallSpeedY *= -1;"). So then then the ball goes in the reverse direction, and it's now 3 pixels into the paddle's width. What happens next? The collision code kicks in again and reverses the direction. This will keep on happening until the ball reaches the other end of the paddle, where it can escape.
Understand?
http://www.darkgdk.us/ <- You can now submit pages, upload images, yet were lacking content. We need your help!