What you've got should work, assuming that A2 is your starting cell, and that x and y are the lengths of your array dimensions. More generically,
xlWorkSheet.Range("A2").Resize(MyArray.GetUpperBound(0) + 1, MyArray.GetUpperBound(1) + 1).Value = MyArray
Be aware that there is (or was) an unadvertised limit on the cell size when populating via an array. Used to be that if your data was more than 912 characters, it'd get left blank. Way to handle that was to check your array for such instances and replace them with some dummy value, storing the indices, and then after you've loaded the sheet, go back through and replace the dummy values. That was an older version of Excel (maybe 2007?), so that may be fixed now.
Looking at your results, I'm guessing your array is loaded wrong. Take a look at the data in the array before your put it in the sheet.