Firmware is simply software that's placed into a non-volatile memory such as a prom or flash memory. It's typically found in standalone hardware devices such as cellphones, MP3 players, etc.
On the other hand, software usually needs to be loaded whenever the device is first turned on. Many may argue (correctly) that firmware IS software that's simply already supplied and boots immediately from ROM, PROM or EPROM. Firmware always begins as "software" in either case and is then programmed into the memory.
You often hear of "firmware upgrades" where a technician swaps out an EPROM for a newer version.
An FPGA does not run software. To make the distinction, manufacturers call the loading of an FPGA "configuration", rather than "programming".
However, just as you can write an interpreter in software to "execute" a language that an MPU does not handle inherently, you can also create (configure) an MPU within an FPGA to run software (which an FPGA does not inherently do).