I recently recovered an old wallet.dat file using pywalley.py and Electrum, which allowed me to read the wallet and sweep the coins to a new Electrum wallet.
Steps:
Passphrase is optional, only if the wallet is encrypted.
If that works, then run it again with the --dumpwithbalance option, that is
./pywallet.py --dumpwallet --dumpwithbalance --datadir=. --passphrase=PASSPHRASE
Ideally, redirect it to a file. Then, search the file for nonzero balances.
You can use http://BitRef.com to make sure that the addresses with balances still have balances.
In the JSON dump of the wallet.dat file, you will find the private key, in the field labeled "sec." Don't share that with with anyone. That key will allow anyone to sweep your bitcoins into their wallet.
Using that key, you can install the Electrum wallet and sweep the coins into a new wallet without downloading the blockchain. You will pay a fee of 0.2-0.5 mBTC to do it slowly, more if you are in a hurry.
There are good instructions at https://en.bitcoin.it/wiki/Transferring_coins_from_Bitcoin-Qt_to_Electrum which include a link to a more paranoid process using an offline computer to avoid accidental exposure of your private key.
There is a default fee of 0.5 mBTC, you can adjust it in Tools-->Preferences.
The address in the "Sweep" dialog box is just the new wallet address being swept to.
You can watch the transaction progress at http://bitref.com or http://blockchain.info.
Once in the new wallet, you can send to an exchange like CoinBase to cash out, or just spend the Bitcoin. The Electrum wallet costs more in fees but saves you the pain of downloading and managing the whole blockchain.
EDIT #1: The sad news is that as of January 2018 the transaction fees are hovering around USD $40, so recovering a small wallet will probably consume all of its value. I managed to sign a low fee transaction from my old wallet, but it has been stuck in the mempool for weeks, now. It may be there forever.
EDIT #2: After 26 days in the mempool, my low fee bitcoin transaction finally got confirmed.