I think it's too much work in many cases for others to bother free-riding your service with tools like citrix. If they like it that much, you're doing well!
Here are a few things though that might help keep the free-riding down.
1) Have a reason to need separate user names. I don't know what your service is, but you can almost always add some sort of 'identity' to it that people will want to keep for themselves.
2) Prevent people from loggin in too much from other locations. In many cases, people will want to keep their PC to themselves, so you can block free riding by checking cookies and ip addresses.
3) Charge more for overuse. Even if this is unlikely to actually catch people (i.e. the limits are set rather high) it can still make the person who's paying for the account less likely to share it with others.
4) Give a limited time free trial. This will cause people to create their own profile that they may be "invested" in, and want to keep. They will be less inclined to use someone else's account after they have their own, and if you price it well enough, they may be interested in buying it.
5) Price it well, and have reasonable expectations about how this will turn out. Odds are you will have some free-riding. Charge enough to cover your costs, and just deal with it. In many cases, the amount of discomfort it would cause your users and time it will cost you to cut down on free-riding will be higher than the damage you are preventing. Think carefully before you make drastic changes to your system to prevent "stealing".
I would suggest that you implement your service, and then see whether it's actually worth it to implement restrictions. It may be that you don't actually get that much in the way of free-riding. Or the free-riding could possibly be considered a cost of advertising. In the end, it's up to you.