Hello,
I was trying to install WordPress on a new Windows Webserver 2008 R2 having the same problem for several days: "Error 500 Internal Server Error"
The solution: When starting WordPress the first time without an existing wp-config.php error 500 is returned back to the client including an explanation and the link to ..../wp-admin/setup-config.php. However, IIS only returns Error 500 without showing explanation or link and therefore the user cannot recognize a solution!
It would be really better doing something like a fileexists() and if this funtion is returning false showing explanation and link in a "normal" page since error-pages are not showing the useful explanation due to security reasons