My solution consist of tow things:
1) A "master"-program on the computer with user-interface, that sends bluetooth-commands to the nxt.
2) A "slave"-program that executes the retrieving commands.
To get it work well, quite a bit of programming has to be done, but it seems like you have some ambitious plans, so i think you can do it.
You can not use the USB cable, you have to setup an bluetooth-connection. You can use directcommands, as a initial task in the master-program, to start the "slave"-program on the nxt, but then it is wise, not to make directcommands while running the slave-program.
------------------------------
LabVIEW 2009 and 2011 user, with LabVIEW toolkit for Lego Mindstorms NXT.