Migrations are always a big topic for debate, while in my humble opinion they never have to be. Please let me start of with mentioning my blogpost about content migration and migration tools: http://www.tridiondeveloper.com/how-to-say-goodbye-to-your-migration-tool
In here I explain (based on my own experience), there is no better way to migrate content than to do it manually. When you hire so called cheap labor (college students, etc.) it will cost you less and give you a higher rate of success. Plus, who wouldn't prefer a blond 21 year old sitting across from you doing all the work, over an old crappy computer which is blowing dust and burning CPU cycles?
So to answer your question directly I'll list your option in my order of preference:
Manual content migration (cheap and fail-safe)
Database migration
Content Porter
Custom built migration tool