Well, one possibility is that some pizza or ball or iPhone or earth has coordinates that are off the screen in TWO directions (e.g. x < 0 and y < 0), so it runs both your codes, and tries to remove the object twice.
To fix this, your IF/IF/IF/IF statements should be IF/ELIF/ELIF/ELIF.
What Janine said about working backwards when removing from a is also correct, although it probably isn't causing he error that you're seeing here. (If two consecutive objects in the list are both off the screen, then this bug will cause only the first one to get removed. However, the second one will presumably get removed the next time it moves, so it still won't get very far off the screen...)