There are a lot of routing packages out there, where you can add the "friction" values to be used when calculating a route. Distance, and time are just two examples of different "friction" values. The flexibe routing algorithms are usually exposed as a part of a commercial GIS package which is usually beyond the means of an average user
Check out www.freegis.org to see if there are any packages out there that will suit your needs. Manifold GIS is pretty cheap too, unfortunately, you will also need a dataset and there isn't much out there that is good that is available for free, and I don't know of any commercial dataset that is available cheap like Mappoint (navtech data), DeLorme products, etc that can be converted into a typical GIS format easily. The TIGER data is the closest thing, and it is pretty poor (although its improving).