I suspect that you're hitting your real RAM ceiling and your machine is swapping when you're loading or connecting to games. I'm guessing you're at 4gb - I sincerely hope it's not less.
To confirm, open up Activity Monitor (Applications > Utilities) and go though all the steps of loading and connecting to a game. Switch to Activity Monitor while you're in a game, your System Memory will probably have very little "Free" memory left.
You can attempt to free up more RAM by quitting other applications that are running when you're playing TF2, but I suggest upgrading to 8gb (if your machine supports it). It's under $100 and makes a huge difference when doing all sorts of RAM-hungry stuff (photoshop and parallels at the same time? not a problem!).
Or, you can try to adjust the settings down to a more manageable level for your amount of RAM. Lowering the texture quality is probably the easiest way to achieve this, but try out the rest of the settings to see what works for you.
I used to do a fair bit of administering various types of game servers, and I've seen many different solutions:
- Linux shell script (sometimes using
screen
) or Windows batch file - the advantage of this solution is that it's simple, and practically anyone can set it up. The downside is that often times TF2 crashes in such a way that it doesn't exit, but it's not really responding either. This won't catch those times.
- Firedaemon - as you've noted, this is a decent app for managing servers, but cost is an issue. It's also not "TF2 aware."
- ServerChecker - This is quite old, but it's still something that works OK. It sometimes has issues if all the servers go down at once and take a while to start back up again, this tends to trip the "timeout" unless it is very large. This can lead to infinitely restarting servers, which is a pain. It's also Windows-only.
- Nemrun is more of a "auto-update" tool, but I think some people run this as a server checking/resetting tool as well. It's python based, but the documentation is somewhat sparse.
I've used all of these to varying levels of success. What you use depends mainly on your setup and what you feel comfortable with.
None of these really worked for the gaming organization I was a part of, so I wrote my own. It's called OpenMAUL SCI. It requires a little bit more setup/technical know-how than the other solutions, but the group I authored it for found it quite useful.
With OpenMAUL SCI, you can monitor and administer your servers via a RCON interface, so if you already use something like HLSW, you can just put in the SCI IP/port and send RCON commands to it just like any other Source-based server. In addition to server monitoring, starting, stopping, etc, it's got a bunch of other features, like map downloads, automatic updates, etc.
I retired from server management some time ago, so I'm not actively maintaining it, although the last checked in version is reasonably documented, stable, and feature-complete.
Best Answer
If it's only people on the same LAN that can connect, then the problem is almost definitely to do with the server's firewall or, more likely, the router that your friend is using.
In the first case, it may be that the firewall is configured to accept connections from computers on the same subnet (i.e. on the LAN), but block connections coming from computers outside the subnet. Set the firewall permissions on the server, and you're set.
In the second case, it's likely that the ports used by the server aren't being forwarded by the router. The router doesn't know what to do with incoming connections that weren't initiated by one of the computers on the LAN, and the TF2 server might not be smart enough to tell the router that it's listening on port 270xx. Forward the required ports using the router (web) configuration tool, and you should be good to go.
Here is some more information about setting up a server, and the needed ports.
EDIT: @Matthew Read posted a nice answer on a similar question listing the ports in use by Valve games.