(1) Is there any way to get directly a CMS signature from JavaCard?
As JavaCards are quite versatile if you are the one programming them, that just might be possible. The communication required to retrieve those CMS containers, though, would be quite proprietary, most likely only usable by your code (which can be good or bad for you; for the customer it generally is bad) and by code from people hacking your solution.
(2) Is it possible to create CMS signature from already generated signature only with signers certificate (without acces to private key)?
You can create very primitive CMS signature containers if you already have PKCS#1 signatures, cf. the question How can we Convert PKCS#1 to PKCS #7 if I have the Certificate you refer to.
If you intend to be interoperable with other signature verification software, though, such primitive signatures (which have a huge potential for manipulation) most likely will be rejected.
(3) Do you see any problem with "conversion" code above?
Please also supply sample PKCS#1 input signatures and sample CMS results. Furthermore, as @owlstead commented, You should not use Sun inner classes, they may be altered, renamed or even removed without further notice. (I actually would prefer to replace should by shall.)
(4) Do you know any tool, that can be used to verify detached signatures? (to be able to check my outcomes)
OpenSSL contains verification tools. Furthermore there are many web services providing signature verification services. Which of them would be appropriate for you, does very much depend on the PKI and legal environment of your signatures.