The easiest way to program FPGAs is using a high-level language, rather than an HDL (hardware description language) like VHDL or Verilog. (Full disclosure: I work for a C-to-FPGA compiler vendor.)
There are a number of commercial compilers that take C or C-like languages as input and generate either VHDL/Verilog or some other hardware representation. The output of these compilers may then be run through synthesis/mapping tools (Xilinx ISE, Altera Quartus II) to create a bitfile, analogous to an executable, for programming the FPGA device.
The book Practical FPGA Programming in C (ISBN: 978-0131543188) covers the basics of FPGA programming, using Impulse C as the design language.
These C-to-FPGA tools are quite expensive from a software developer's perspective, but some of the vendors have educational pricing and/or offer free evaluations (timed or feature-limited). There are free editions of the synthesis tools (Xilinx ISE WebPack and Altera Quartus II Web Edition), which are either time-limited or can only target smaller/older devices.
There are many cheap FPGA boards out there, for example:
Portable, PC-connected boards are also available from some vendors (Pico Computing, Opal Kelly, etc.). These connect to a PC with a USB cable or via a PC Card/ExpressCard slot, but are somewhat more expensive. The advantage is connectivity with the PC--you can more easily do I/O between system memory and FPGA than with the standalone boards listed above.
The interesting thing about FPGAs is their capacity for parallel processing. Certain parallelizable algorithms, running at ~100MHz in the FPGA, have shown performance improvements on the order of 100x over the same code on a 3GHz x86 CPU. So if you want to be impressed by these little low-power chips, implement Multiple Sequence Alignment, backprojection, image/signal filtering (DSP algorithms in general), or Monte Carlo simulation on an FPGA.