Network printing is a daunting task. Network printing in Linux is tricky. I have a Linux server with a shared CUPS printer (one of those HP PSC printers). Making OS X print to it was somewhat simple because it's BSD under the hood, so it has CUPS/IPP support. Adding your server's hostname to your hosts file was the trick to making it work.
I set out to make Windows print to the Linux CUPS/IPP printer. You should add your hostname and IP to C:\WINDOWS\SYSTEM32\DRIVERS\ETC\HOSTS. This allows for name to IP resolution. Windows doesn't come with CUPS/IPP printing support out of the box. The key to making this work was found in a free Adobe PS driver found here. I chose Adobe Universal PostScript Windows Driver Installer 1.0.6 - English. Run the installer, select "Network Printer", and enter the URL of your printer queue. It will be something like http://hostname:631/printers/PrinterName. Select "yes" when prompted. You can use the Generic PostScript Printer option or you can use the PPD file created by CUPS for your printer with the Browse button. Your PPD file should be in /etc/cups/ppd on your Linux server.
I've only tested this under Windows XP, but other versions of Windows should work similarly.


I have my linux, and my mac laptop using my cups printer.
The last piece was windows.
Works great, test page printed.