If you stick to the FPGA manufacturer's guidelines and list of compatible devices, you can generally program a connected configuration PROM through JTAG using the standard tools. This is probably the way to go unless you are doing something more complicated (such as allowing programming via an SD card and external microcontroller). Have a look at the schematic diagram for some FPGA development boards.
JTAG is a standardised debugging and testing interface, which can also be used to program FPGAs. It's broadly similar to ICSP. Unfortunately the physical JTAG interface isn't standardised, so you will generally need to get a different JTAG adaptor for different manufacturers.