My 300D exhibited the problem indicated by subtle_spectre and wouldn't pop up. When I manually popped it up and took a picture inside with low light, the flash also did not fire.
I had recently been using and external flash in the hotshoe of the camera (with SafeSync, of course). When I checked the camera's hotshoe, I noticed the small microswitch on the right side of the hotshoe, under the side rail, was still pushed down. I got a small screwdriver and pushed the spring-loaded contact down a couple of times, the switch popped up and the flash started working.
Might be worth a shot, especially if you've been using the hotshoe for any kind of device such as a flash or remote trigger.
Edited to add: A picture is worth 1,000 words (or at least as many as in the above post). At least my old P/S camera has a decent macro mode.

Great post. I didn't know that. Thanks.
_______________
