It could be several things, but start in configuration.properties. Make absolutely sure the Application Servers that it tries to connect to are all up and running, the servers are reachable from the web server, and you don't have any invalid ones in your list.
Next, keep an eye on your application servers. Use the Server Status function of psadmin to make sure you have plenty of idle PSAPPSRV processes during the slow times. If they're all busy, you either need to start more, or figure out if something is getting locked on your database server.
We had a situation at my current client where all of the PSAPPSRV processes were busy and users just had to wait while the browser spun. Turns out we had a bottleneck on the SAN that was causing the database IO to take forever. We increased the available memory on our database server (reducing I/O), and identified another application we were competing with for SAN I/O and fixed it.
Finally, watch your Java Heap memory on your web server. If you use weblogic you can do it at
<piaserver>:<piaport>/console. Go to Servers > PIA. Then click the Monitoring tab and Performance. If you're doing garbage collection too frequently you might notice some slowness -- although probably not to the level you're describing.