I followed you through all three parts, and am glad I did. This was as much a lesson in structured C-programming as in using SDL. (By the way, thanks for the hint to use sdl-config, that really saved my build process on FreeBSD 7.1). The "final" program looks a lot like some of the kernel modules I've browsed through, wishing they were written in Python. Now maybe I can understand them too.
Did you ever see the ball bounce into the end of a paddle, then bounce in and out down the length of it? It looks like a zipper getting unzipped until it's done, until you move the paddle again. Probably a side-effect of the surface destruction you mentioned already.