Which method apart from the cost of carry model exists, and which works best in real life? How does the market expectations impact on the futures price?
When the required conditions are fulfilled ( a storeable commodity, an observable spot price, no "convenience yield") the cost of carry model determines the futures price by arbitrage.
Otherwise, to my knowledge, there is no alternative model. The futures price will just be the market's expectation (possibly plus or minus a risk premium) of what the commodity will be worth at the delivery date. In other words it can be just about anything in that case.