load_bg is just a wrapper for pygame.image.load('data/bg.png').convert(16, HARDWARE) the question is how does the surface get lost between doing this and blitting on ajacent lines when python is in full control of the video memory at the time.
Maybe scr is the problem, not bg
can you post the exact error you get?