FPGAs are monsters of flexible logic. If you have a problem that can be pipelined or run in parallel you can perform miracles. If performance isn’t your focus, you can emulate beautiful machines from the past.
Over at Nick’s blog, there is a great article on how he built his own FPGA out of discrete components. This is of course not a very efficient way to cram many transistors into a limited space, but a great way to learn how and FPGA actually is put together.