Question: We currently have a 'global catch all exceptions' section in our application. When an uncaught exception is thrown, the stack trace is displayed and the application continues running.

More often than not, this leaves the state of the application invalid going forward. Especially with NullReferenceExceptions, and threading exceptions being the cause.

I decided to have the application log the exception in the 'global' section and shutdown and restart. This was met with criticism from management - who asserted that the user should choose to select whether or not to restart under these conditions, since it never shut down before. (*Though I tried my best to explain that the issue was allowing the app to continue running in the first place)*.

I am looking for things to watch out for now, and specific approaches I can take to handle code that is now allowed to continue to run while in an invalid state.

Answer: 
Its definitely best practice to shutdown the application which has thrown an unhandled exception. Under Winforms in .NET, there used to be a dialog which popped up and gave you a big warning with the option to continue running. But since I think .NET 3.5 that continue option is no longer there and you are forced to shutdown the app.

Whether you then restart the application automatically is up to you - I have seen this done by some other major software like browsers.

The dialog for our 'global' catch all exception handler displays the stack trace plus other information (machine name, time, error message, current user name, etc) in a textbox which can be copied to the clipboard. A button is available to email support with the information (button is named 'Send Error Report'). In my experience, the user probably won't bother informing you of it happening unless they are given an easy way like this to email you. And writing the exception details to a log file, while still necessary, won't be of much use to the developer until you get access to file or to the machine.
Depending on the situation there's an answer I used once: If something goes haywire but it's not a certain fatality I reset the document name--if the work gets corrupted it wouldn't overwrite the original. It was only intended to allow them time for a graceful exit.