I think it takes a lot of love, understanding, tolerance and a sense of humour. You have to accept that no one is perfect - even though you may have thought so in the honeymoon period.
If you can accept the persons faults and love them despite of or even because of them, try not to hold a grudge and realise that some days even with the best will in the world life will not be a romantic dream - it will work............. hopefully!!! Oh and you must also be an eternal optimist!!!!