Question: What kind of problems arise from installing a new program while other programs are running? I'd imagine the GAC solved a lot of the old problems of shared dll's being locked. So what kind of issues still arise? I can see issues with upgrading a single program for sure, but outside of this its hard to see why apps would stomp on eachother's toe's.

Answer: 
GAC only helps with .NET assemblies. There a lot of other applications which are not written in .NET.

What else problems exist?

* Other applications holding files open
* Other applications holding network connections open
* Other applications holding devices open
* Other applications slowing down the machine so that an unexpected timeout somewhere may occur leaving the work interrupted
* Other applications modifying files and settings in the system the installer would expect to stay unchanged during the process (consider it transactional integrity)

Why risk failing the installation process when it is sooo easy to stop other applications and just wait out a few minutes? Go have a cup of coffee in the meantime. :)
The possibility of conflict between application being installed and already running one is very small. These days most applications are based around concept of sandbox and they don't need to step out of it during installation process (or normal usage).

But lets suppose while installing some software, a change needs to be made to a file that is very likely to be already open by another application. You have two choices here:

1. check if the file is open/locked, figure out which process is holding a lock, display a nice dialog asking to close that specific application
2. just ask the person to close all the applications and you're on a safe side with no extra effort

Sadly, the second option gets picked up most of the time.