What you are doing with ICS is IP Masquerading, also called NAT (Network Address Translation).  The ICS server is taking the request from say machine B, and putting the correct address on it, and sending it to the network.  Then when the reply comes back, the ICS server sends the reply back to machine B.  There are lots of software and/or hardware solutions to do just that.  Netgear, Linksys, SMC and many others put out a smaller hardware device called a DSL/Cable router.  Sybergen (Sygate), Deerfield(Wingate), and others put out software that do the same thing.  
ICS has an advantage in that it's only $80 or so.  (Buy ICS, and Winblows is free 

).  But it is slightly confusing to setup/configure, it requires 2 Network Cards (NICs), and it requires that particular server to be on all the time, if you want to surf from other machines.  This limitation will apply to all software/server solutions.  
The device solution is nice, in that you only have 1 NIC in each pc, and you have a small, dedicated device to manage your internet traffic.  It can be on all the time, and if you need to bring your server down for maintenance/crash/etc, you still have network connectivity for the rest of your network.  I personally prefer this method, because I don't have to rely on finiky computer/os components to make sure my Internet is always available.  Once nice feature about the SMC is that it also has a dial up port, in case your DSL goes down.  And it has a printer port, so you can share one printer for all your PCs through this same device.  This is a nice feature.  I have a 3 port print server, and have a laserjet and inkjet on it.  6 computers, and 2 printers. 
Anyway, if ICS is working, I think you have the cheapest solution you can get for now.  If you don't mind having that particular server be the firewall/gateway/router, then I would stick with it, and be happy.