...
Multisig could be helpful.
Create a multisigwallet where 2 keys are needed to unlock the funds.
Or, 2 out of 3, or anything else.
hmmm, so simple, and not a bad idea

I could have 1 key, give one key to a friend and one to my sister telling them not to give me the key if I don't have 10
BTC on an address
Nice

Sounds pretty risky. Could work short term, but the longer it takes for you to save up 10 btc, the higher the chance one of them will lose their key (or forget where they saved it etc).
I wouldn't go for any smart-contract thing either. In an unlikely event bitcoin price goes drastically up (say to $10,000 or higher), you may not be able to ever reach the goal and have your funds stuck.
The thing to consider (I'm not recommending it though) is to engage your funds in providing loans for margin trading (i.e. on Poloniex), it's relatively safe (but there's always a risk of exchange going under etc) and you could earn some small profits. Just provide a loan for i.e. 30 days + auto renew, so in order to withdraw it, you'd have to turn the 'auto renew' off and wait for up to 30 days. Should be enough to prevent you from the heat-of-the-moment spending.