My priority vote:

1. FIX API - because there's no other way to go for many professional traders.
2. Dukascopy connectivity - because of their tick data history. I tried many different data sources and Dukascopy is one of the better ones.
3. Real (variable) spread simulation - for me it's very important as we make thousands of trades per week, each with very small edge. Thus we need to test on our broker's data and with absolute precision. Sometimes the trades tend to cluster during certain hours when the spread is bigger and this alone can make all the difference between profitable and unprofitable system.

But maybe the variable spread simulation is possible even now with your own data source? I imagine you could create one asset from ask prices, one artificial asset from bid prices and subtract them during backtest to get the real spread. Is it the way to go?