Can I downgrade/upgrade to the firmware version I want?

Check inside the TSS Center (available from the Cydia homepage) to see the TSS information (SHSH blobs and APTickets) saved for your device — these are iOS versions that it may be possible to downgrade (or upgrade) to on this device.

Limitations

On devices newer than iPhone 4 and on iOS versions newer than iOS 5, SHSH blobs are generally not usable — in other words, you can only upgrade, downgrade, or restore to iOS versions that Apple is signing (which is usually only the newest iOS version available for that device).

There is no way to downgrade from iOS 7.x to older versions of 7.x, even if you have SHSH blobs.

There is no way to downgrade from iOS 6.x to older versions of 6.x on newer devices (eligible older devices are iPhone 4, iPhone 3GS, and iPod touch 4th generation), or to downgrade newer devices from iOS 6.x to 5.x — even if you have SHSH blobs.

What is SHSH? Why do I need it?

Apple has a system that tries to make sure you can only install the latest iOS firmware version: devices require their firmware installation to be verified (signed) by Apple during every restore or upgrade. Apple usually only signs a version while it's the latest version. This is designed to keep you from installing jailbreakable versions as Apple fixes exploitable bugs.

When you open Cydia, it automatically saves your device's available SHSH (signatures), so that you may be able to use Cydia's signature server replacement to restore your device with those firmware versions later (after Apple no longer signs them).

Note: Access to saving SHSH is based on what Apple's servers provide; it is not affected by your device's current version (or other properties). This means that Cydia can only save SHSH for firmwares being signed by Apple at the moment when you open Cydia; and after Apple releases a new firmware, Cydia has no way to save SHSH for any previous version, even if it is currently running on your device.

More details: Caching Apple's Signature Server (September 2009).

How do I use SHSH to downgrade or upgrade to a version?

Using redsn0w, you may be able to "stitch" your saved SHSH blobs for your desired iOS version into the appropriate IPSW file (firmware file) and then use the resulting custom firmware file to restore your device. This fakes the required firmware signature process.

This is a procedure reserved for the bold and adventurous, with many possible error messages along the way (although they can generally be solved with some research). See the linked guides for the many exceptions.

Note that you can also manually save SHSH blobs for any device (even a non-jailbroken device) using redsn0w or a free tool called TinyUmbrella, and you can also use them to check the available SHSH blobs for your device.