If you stick strictly with the J2EE Specification then it is possible to create a truely Application Server independent J2EE Application. That is with the exception of the deployment descriptors of course. It doesn't matter how you slice it, you will need to have separate vendor descriptors for each Application Server that you wish to deploy to for your ejbs.
If you go with plain
JSP and Servlets then it will be a lot easier to achieve Application Server independence. You could actually create a war that could be picked up and deployed on multiple Application Servers without change. Of course in that case you would not need a full blown Application Server anyways... which may be another benefit.