I've had a similar problem. Check your TNS definition - if it has something like "(RETRIES = 180)(DELAY = 5)", it can be contributing to your issue. (Why Oracle seems to like "RETRIES = 180" is beyond me; this causes programs (like PL/SQL Developer) to retry 180 times (with a delay of 5 seconds) when there is a connection issue.)
180*5 means that connections will seem to hang for at least 15 minutes trying to communicate with Oracle. If you leave PL/SQL Developer sit for 20-40 minutes, it will eventually time out. (You can also try disconnecting the network connection on your PC, which seems to allow SQL*Net to give up without retrying the full 180 times.)
I've changed my TNS definitions to use RETRIES=2, and I no longer have this issue.