The steps for setting up the virtual machines is almost identical to the configuration of MSCS.
Create the virtual machines.
Create a passthrough RDM using vmkfstools, for the cluster nodes.
Once the RDM file is created, add it to the cluster node machines.
Verify LUN mapping from the virtual machines.
So, after the LUN mapping, get the cluster created, and get your cluster multicast IP.
The multicast is where things get hung up. In a Cisco environment, it was almost impossible to let Cisco devices figure things out on their own. So, create a static entry for each port on the switch that will be part of the multicast group. This method was easier than trying to setup a multicast router, and was more localized to the cluster at hand. The one thing to watch out, is that if you have switches in a redundant fashion, then you have to make sure to include the ports that connect the switches (whether they be trunk/ISL/port channeled). Otherwise, all cluster nodes will not be able to recognize each other, and you'll have mixed results when trying to query your cluster vote.
Once that issue is resolved, it's on to fencing. Fencing has been interesting as well. From what I've seen, the RHEL fencing agents for vmware, treat ESX as stand-alone entities, and hadn't yet been updated to talk to VI. This appears to be changing, and there are solutions on the net that allow for the vi perl toolkit to be utilized to "shoot vm's in the head" in case of errors. This is relatively new, and gets us away from using customized fencing agents, which, of course, are not officially supported by RedHat.
-KjB