Say I had a 100$ in a Mt.Gox account and wanted to send it to my TradeHill account, how hard is it to perform a transaction like that without going through a separate bank account? I'm mostly asking in a context of automated trading bots, buying and selling Bitcoins at different exchanges.
That's exactly the service https://www.bitinstant.com/ provide, it should be fairly simple and I think they and mtgox have the API necessary to do this by a bot.
Transferring bitcoins is usually free. You just need to wait around 1 hour for confirmations from the network.
Transferring USD is fairly easy if the exchanges support Bitinstant (currently it is only available at MtGox, TradeHill and CryptoXchange). Bitinstant transfers usually takes less than a minute and cost around 1%. If the exchange doesn't support Bitinstant, you will probably have to wait at least a few hours. It all depends on the available deposit/withdrawal methods. If everything else fails, you can always buy bitcoins at one exchange, send them to the other and sell them there.
In terms of automated trading for arbitrage, speed and fees are really important. I suggest that you analyse the arbitrage opportunities at the exchanges of your preference to see how big they are and how long they stay open.
For example, currently at TradeHill/MtGox most arbitrage opportunities are below 1% and are only available for a few minutes. This makes it almost impossible to move money around in order to profit from these opportunities.
This is why there are some juicy arbitrage opportunities between the exchanges when the prices are volatile -- few traders keep much cash idle in different exchanges so when the price rises as the result of a whale at Mt. Gox, exchange rates at the other exchanges might lag until either new funds are transferred or the sellers wake up and readjust their orders to reflect the new price levels on other exchanges).
There is [Edit: was] always http://www.bitcoinica.com for leverage.