I just want to add that you can create your own de facto hardware wallet with a USB Flash Drive with these simple steps:
1. Install a persistent version of Linux on your flash drive. (Something like
this)
2. Get Electrum on it, either from another flash drive while it's booted (if you never want it to touch the internet) or simply from electrum.org.
3. Turn off networking permanently; it's only a cold wallet if it's completely offline.
4. Create your wallet offline with Electrum.
5.
Learn how to use your new cold wallet.
Edit:
6. As o_e_l_e_o points out, encrypting it would cover more bases.It's a lot more inconvenient to spend from, but that has its advantages. You also don't need to worry about it being compromised in transit, having manufacturer-specific vulnerabilities, etc. Do note that I'm not saying that this is necessarily better than commercial hardware wallets; it's just another option you can look at.