Even if the MessageBox displays OK as the result of some exception, I think you will have to handle that exception to somehow reset the grid so it starts painting again.
The BeginUpdate/EndUpdate code ignores WM_PAINT messages to avoid the painting. This is what sets up the endless loop when you try to display a MessageBox while an update is in progress.
So, one solution is to include a try-catch in your update code, and in the catch block, cancel or end the update before either rethrowing the exception, or displaying something yourself.
Another solution is to use interop to freeze the painting (and not ignore the WM_PAINTs in WndProc). This technique is discussed in one of our WindForms FAQ. http://www.syncfusion.com/faq/winforms/search/637.asp
Here is a sample that illustrates both techniques.