I have done this before but it involves a lot of tries and a lot of compiles. I spent a lot of time working on LFS (Linux From Scratch) to understand a lot about how the system boots.
Then, look at the output and see what the kernel is doing and where it hic cups. Some usual things that take time are discoveries (udev, network, ...) and things like dynamic mips calculation...
Start with a minimal config and add the things you "know" you need. Then build the kernel and watch it not boot up :-). Start adding components until the system boots.
If the result is still not fast enough for you, you will need to do some more digging and you may have to modify some code.
I know this sounds like a horrible hack way of doing this, but there are way too many dependencies to make this and exact science -- if it were, they would have added a "Ludicrous Speed" boot option in the config. :-)