good introduction is kegel talk http://www.kegel.com/corba/lula.html
* Power and elegance of distributed object model.
* Standart-based, which imply well-documented
* Existance of many implementations, commercial and open-source.
* Language independence.
* Platform independence.
Complexity. This is impies from strengths, but learning curve is too long and value of developer competence mean more, than in other techologies.
Different level of quality in CORBA specifications: you must be aware about early versions of omg specifications, which was finalized during 'naive' period of object technology. more detailed. In last years situation looks better.
Absence of standart for deployment and dynamic loading of local modules. (But in each concrete case this can be easy solved. For example, for C++ - by using DynamicModules component from Grad-Soft C++ ToolBox
Level of market -- we have intention, that main vendors or CORBA technology have very strange market policy.
Absence of optimized local components - it's not true from version 2.3 of CORBA standart.
CORBA is not modern technology - it's partially true, now CORBA standards are not mainstream. From other side -- CORBA-based systems are big part of existing working codebase.
Lack of component model - it's question of time. Component specifications are adopted and exists few commercial implementations see Software.