I'm used to rolling my own kernels for servers, as it nicely minimizes the number of exploits (and the resulting patches) to take care of.
In a traditional (bare metal) world, the whole process is about knowing what you have (hardware), and what you need (Ethernet, IPv4, iptables, etc.) In a virtualized environment, some things stay the same (still need Ethernet and IPv4), some things go away (power management), and then there are some new needs (vxnet3, or vmware-tools, even though that's compiled outside of the kernel).
So my question mostly concerns itself with the last two categories: what can I remove completely, and what new stuff do I want?
For example, what IO scheduler do I want, if all my disk operations are going through another filesystem/scheduler/cache to get to the virtual disk? Do I need hyper-threading enabled, or is the VM going to show them to me anyway as a CPU anyway? Do I need Large Receive Offload turned on, or is that something that the hypervisor's network drivers are going to do for me?
I subscribe to all the previous comments with the following additions. Most of the performance tunning is done on the ESXi Guest is done on the .vmx file. Also any tweaks that you can add to the networks interfaces (ex: buffer size, LRO, etc) will increase performance of the Guest VM. You can also check out the Paravirtualization features of ESXi.
VMWare has a very good document that provides best practices for performance tunning. You can find it here "Performance Tunning Best Practices" This paper will also help you understand how low level virtualization works in ESXi and maybe give you an idea of what can you disable/enable on the Guest OS (Kernel included)
HTH,
Generally I don't customize the kernels in my VMWare VMs -- they're similar enough to physical systems tat the extra customization isn't really worth it IMHO, I just treat them like physical machines.
That said, while I'm not sure about schedulers, but you can definitely strip out all the unnecessary hardware support in order to free up some extra RAM and such, and as @Chopper3 suggested using the VMTools drivers for the virtual hardware.
All that said I'm not sure what kind of optimizations others can com up with but I'm definitely interested as well -- while a lot of "hardware" stuff is handled by the hypervisor (e.g. LRO) I've never read any statistics that detail the effect of LRO in the guest, which could have an effect on performance.