Made a npm module called await-transaction-mined for this specific problem.
const awaitTransactionMined = require ('await-transaction-mined');
(async function() {
var txHash = '0x6ee5d58c314d183f3ca70e2292b39dca5ae46141fe4e6b1da5b106dd506e589a';
const minedTxReceipt = await awaitTransactionMined.await(web3, txHash);
})();
It polls the blockchain every 500ms to check if the transaction has been mined. Once mined it returns the transaction receipt.