The possibility of an integration is rarely due to the technology. Most people would agree, but qualify possibility with a budget. With that said, even with great technology, skilled professionals, and adequate budget, integrations can still fail.
I think the reasons boil down to attitude and behavior:
1) Building from the bottom up: Avoid diving directly into topics such as field mapping and data exchange mechanics. Initial conversations should include high level topics like division of labor, project goals, expectations and business processes. High level decisions will alter the low level details.
2) The integration will do all the work: Integrations make work life easier by altering roles and responsibilities - not by removing them. Instead of entering data, we are now monitoring it. People will always be involved.
3) Lack of functional understanding: I have walked into situations where a client has an integration, with little to no knowledge of what it is actually doing...talk about dangerous! Documentation is one method for keeping knowledge in house and maintained. Another method involves training and practice: software reliance can be reduced and understanding can be increased by having people perform the processes manually.
4) This is how we have always done things: Any implementation project should be viewed as an opportunity to better a process...not re-invent it. When it is time for the company to adapt and grow, the integration should be prepared. Conversely, integrations built out of tradition lead to rigid processes and logic. What happens when business changes? You may have to re-implement the integration.
5) Oversimplification: There are plenty of simple integrations in which we just map a few fields and move some data, but this is not always the case. As a colleague of mine likes to say, "The devil is in the details." The devil is not very forgiving.
6) Haste: In most scenarios, time is on our side. Remember to take the integration through a sound SDLC, complete with client QA. It is a lot more expensive to clean up an integration than to just wait for it to be correct.
7) Fancier is better: Adding complex decision logic and transfer mechanisms (real time versus manual, etc...) may not actually make an integration better. There are actually legimate reasons to simplify an integration. Those reasons may include maintainability, stability, and flexibility.
People dictate the success of a project, and we should believe that technology and knowledge are never the limitations. The only limitation is human ingenuity, which is something we can control through our attitude and behavior.
"Respond intelligently even to unintelligent treatment." - Lao Tzu, Tao Te Ching