We experimented with Xamarin.Forms about 18 months ago, so this experience may be dated, but we found Xamarin.Forms to be unsuitable for production projects. Granted, it is very quick to get basic data capture apps running on multiple platforms, but we found that inevitably the UI capabilities were so limited that we ended up having to write custom renderers all over the place, which complicated the code no end.
In my opinion, Xamarin.Forms tries to solve the multiple platforms problem in the wrong way - by trying to provide common wrappers around the UI elements in each platform. This means you'll always be able to do less with Xamarin.Forms than you would be able to do with Xamarin out of the box, and you will always be fighting with lowest-common-denominator implementations of the most common elements, while having to write your own code for more advanced UI.
By contrast, the MvvmCross approach aims to consolidate as much as possible of your business logic into a single library while leaving you free to do whatever you want in the UI of each platform. You can get as much as 80-90% of your code into a shared library while having complete freedom to implement the UI you want for each platform. It's a cleaner way to solve the multi-platform problem, IMO.