The diagnostics you provided matches the behavior. The form's Load event would be the last bit of your code running before the form paints itself. The Shown event would be next. The debugger would indeed stop on the Application.Run() call, that's the last bit of code that you wrote for which the debugger has source code info.
The key is to carefully examine the Call Stack window, there ought to be additional stack frames above the Application.Run one. The top one is the trouble maker if the code that causes the hang is managed code. You won't have source code for it, getting setup with the Microsoft Reference Source server is important if you need that code.
But it isn't very likely to be managed code, the vast majority of Paint event handlers are unmanaged code, either in Windows or some kind of ActiveX control. To get insight into that kind of code you'll need to enable unmanaged debugging. Project + Properties, Debug tab. Also, Tools + Options, Debugger, turn off "Just my code". Getting setup to debugging symbols from Microsoft's symbol server can be important to make sense of the stack trace, do so if you only get hex addresses in the stack trace.
Next, you ought to be able to see what particular control is causing this problem by observing what is getting painted and what is not. Controls get painted in Z-order, the one you don't see, or only see partially, ought to be the trouble maker. Painting hangs in Windows or .NET controls are unheard of, suspect any kind of ActiveX control on your form.