VMware was conceived as a Enterprise Virtualization Platform. OpenStack was conceived as a way to spin up a bunch of VMs really fast for temporary use by NASA and RackSource.
I rather like the observation that OpenStack exposes APIs from which to build a virtualized environment; whereas VMware exposes a user interface from which to operate a virtualized environment.
Many, if not most organizations, simply want to use virtualization to improve various business metrics, like cost, resource utilization, availability, etc. and lack the resources, time, and leadership commitment to build a cloud from OpenStack. For them, large and small, VMware is a better bet.
Note: this is not a blanket condoning of the VMware pricelist. It's not cheap, but neither is a small army of developers required to build an OpenStack implementation.
For those few with grander ambitions, the attraction of OpenStack as a an opensource platform for building a new business model over which you have profound levels of control via development of is undeniable. But as many will attest, simply loading legacy apps on an OpenStack cloud is an invitation to disaster.