Nowadays, everything is on external media (external as in "outside of CPU's memory address space"), so executable code should be loaded into the RAM first (and likely assembled from 100s of DLLs or .so's in that process). And before that, you need to initialize at least 3 hardware components (SDRAM, mass storage controller and mass storage device itself; often this list is much longer).
That said, embedded systems booting in under 1 second were available 6 years ago [2]. Not many seem to be interested.
[1] http://electronics.stackexchange.com/questions/96831/sdram-i...