Getting a Port is open or Port is closed message in Transmission has seemed to me to be a matter of luck rather than technical skill for quite a long time now.
I'd thought I'd finally worked out the problem recently, when I applied a maximum upload limit of 80% of the upload capacity provided by my ISP*. This seemed to result in a predictable Port is open message. (I'm guessing that having Transmission use 100% of upload capacity interferes with the ability of the computer to receive connection- it certainly interfered with the ability to browse the web. The explanation seems to be that the computer needs to be able to send information in order to receive it, and with 100% upload capacity used, incoming information is blocked even if the download capacity is not used at 100%.)
However, I began noticing slow download rates on occasion, along with the Port is closed message. With an open port, I'd get up to 60KiB/s; with a closed port, around 5KiB/s. As far as I could tell, the port wasn't really closed: port forwarding on the router was enabled, and ShieldsUp! said the port was open.
I was beginning to think it was an issue with my router. Sometimes restarting the router would give a Port is open message, sometimes restarting the router and Transmission... I was back to thinking getting a Port is open message was a random event.
Then I came across this page at the Transmission forum. The Port is closed message seems to be a common problem, and while for many it may be caused by an incorrect router or firewall set-up, it also seems to be a problem for several people who do have the correct set-up.
Doing some more Googling, I found several examples of technically competent users who had problems getting a Port is open message. I couldn't find an answer to the problem, but I'm convinced there is a problem.
I decided to try out another BitTorrent client, Deluge. So far, I haven't had the same problem- my port is correctly identified as open.
*The Deluge site includes a good user guide with information on bandwidth tweaking.
UPDATE: On a couple of occasions over the past few weeks, I've noticed a very slow download rate in Deluge (this morning, <1KiB/s). Restarting the router has given me a much higher download rate (~30KiB/s, for the same torrent). Deluge has always shown the port as 'open'.
My best guess is that the Port is closed message in Transmission is, at least on occasion, caused by router/ISP problems, rather than errors in the way port forwarding is set up. Perhaps my router just 'clogs up' from time to time with all the incoming connections a BitTorrent client has open?