I wrote a function to remove overlapping sections of rectangles. I'm pretty proud of it. It should speed up blit time when using dirty rectangles on a stationary background, but if the whole background is moving or there are no overlapping sprites, it will waste time.
Please try it out and let me know if it helps or hurts performance. Link to download & details: http://www.pygame.org/project-Optimize+Dirty+Rects-2866-4646.html Jason