Well, looking at the very basics there are the "cosmetic" differences where a user will send a POST or GET form on a click. The session is essentially completely transparent to the user.
Now, the hidden form is much easier to hack than a session. It's still possible; however, it's easier to modify the form and pass different values from what was originally there. So in this respect, the session is more secure (although not completely secure).
If you're not worried about things, I'd use sessions as you're guaranteed for it to work on each user with any browser. Using an onsubmit might not work in all browsers (there are older browsers out there 🙁 ). Look at your target audience to get a feel for what they're capable of.
There really isn't a difference between the two in what you want to do. One is just as good as the other. Now, if later you want to add something, or secure it, it's easier to secure a session and add items to a session rather than form. But that's from my experience. Forms are too easy to manipulate. That's not to say never use forms, but I use them sparingly and track users via sessions 😉