Only delete stuff if you have to, re-use sprites as much as possible, and avoid using deleteall commands - you should really know what sprites etc your using, so take control over them.
Even if it means you don't auto-assign media ID's, deleting everything should only be done if absolutely necessary, it's slow and just using your own ID's means you only need to step through them and delete them, or disable them. Delete all may well have to step through the entire scope of sprites - you might use sprite ID 1, and sprite ID 10,000, that means 10,000 iterations... but what I'm saying is that there are other things that have to happen in the background when using delete all or auto-id's, things that your probably better off looking after yourself.
Say for example your player sprite is sprite 99, GUI elements and other permanent sprites are 1 to 98 say - you could make everything else sprites 100+ and you would know to delete sprites 100 to whatever, leaving the permanent sprites alone.
One small note on Batvinks suggestion... always delete sprites before images - if you were throwing an old chair on a bonfire, you would make sure someone isn't sitting in it first
- I don't like the idea of sprites existing that relate to an image that no longer exists.