<p>I have an application that runs as a child application in a virtual directory.</p>

<p>I want to pass a value from the parent application, but I believe that Session is keyed per application, and won't work.</p>

<p>To further complicate things, the parent application is WebForms, while the child is NVelocity MVC.</p>

<p>Does anyone know a trick that allows me to use some sort of Session type functionality between virtual applications?</p>

<p>EDIT: A webservice isn't really what I had in mind, all I need to do is pass the logged in users username to the child app. Besides, if calling a webservice back on the parent, I won't get the same session, so I won't know what user.</p>

Sounds like web service is the way to go. You could do something like the following:
Have the WebForms app create some data in its database with a key of some kind associated to it.
Pass that key in the URL to the NVelocity MVC application.
Allow the NVMVC application to call a web service (REST,XML-RPC,SOAP,whatever) on the WebForms app using the key that was passed.
This will get around any kind of session keying or cookie-domain problem you may have and allow you to pass some nicely structured data.