I think with the @Observer and @Asynchronous declaration you are going in the good direction. I use this to trigger email sending in the application i'm supporting and this works quite well. These are not extremely long running tasks and i think in your case you probably have to look at transaction timeouts. (?)
Another way could be to use JMS with MessageDrivenBeans but there i do not have alot of knowledge cause the only thing i use are two quartz jobs which are not Seamcomponents yet.