<p>Does anyone have a suggestions as to the best way to allow users to select which columns appear in a datagrid?  I would like them to be able to set this up.  It would be stored with the user in a profile and loaded each time the user loads the grid.  I was thinking about something with ASP.NET personalization.</p>

There are several options for you here.
Add an 'X' image to the header for each column and with a javascript onclick event do a web method call to remove that column from the user's profile of what columns to load.
Have a customization flyout page where by there would be a checkbox list of all the columns and the user could either add or remove what columns from the grid.
There are a few more but they are less AJAX and more page reloading.