For the permalinks, I mean to go to example.com/wp-admin/options-permalink.php and verify the permalink settings there.
For timeouts the two timeouts that I look at in php.ini are:
max_execution_time = 30
max_input_time = 60
When I had a problem with the media upload function,it was a timeout. Try changing the number of items displayed on the library (set under help) and in the upload area, try the browser upload. If this allows you to work with media, I would think the issue is timeouts. I would not increase them much at all, as high values in those settings are not recommended.
I also use the wincache module on my IIS servers, That has a whole host of other issues now (which is why after many years on IIS I have moved most of my sites to a LAMP stack), but it does help load times even. I can not recommend it right now. I am running a dev build to keep it working with WordPress as the release version has issues with file locking (problem for automatic updates).
I agree that it is probably not the url rewrite module if only happens on one site.
One last thought, IIS had been trapping a WordPress wp_die call as a 500 error. I used to fight this one and finally told IIS to pass errors to the application first before responding.
To do this add to your web.config:
<httpErrors existingResponse="PassThrough" />
... all your other stuff
If none of the above is applicable, can you give us a link to the site with errors? There must be something in the url that is causing IIS to error out.