If you want to use a GridControl, you can just set this up using coveredcells, Rows.HeaderCount and setting the values in the cells. Getting teh clicks to work takes more effort.
But if you want to use a GridDataBoundGrid, it becomes more work because of the binding.
Here is a sample of a helper that wraps the functionality needed to add header rows and let the bottom header row move columns, double-click sort columns, and size columns.
You may need to tweak the code to get the exact functionailty that you need.