Regular answer : No. C# can do unsafe (non garbage collected) code, and VB.Net cannot
Hideous Answer : Well, yes it is far from being Elegant, but as my good friend and impressively clever RD Clemens once told me in the middle of a discussion on .Net vs. COM : "There can be no purity in software development". So here it is :
There is full set of Memory management APIs (http://msdn.microsoft.com/library/en-us/memory/base/memory_management_reference.asp) that can be used to do memory alocation (both on the heap and on the stack), copy memory, get a handle to allocated memory, ...etc.
VB can do PInvoke ...
PInvoking into Kernel32.dll (or Coredll.dll in Windows Mobile) makes VB capable of dealing with such issues... which is only usefull in very special cases (using other APIs accessible through PInvoke and making sure there is no garbage collection on the arguments passed to the native APIs is the only use I ever needed them for - and only because I had to show VB.Net code (besides C# code) in presentations ...).
It is not very hard to wrap those calls into some Utility class, and then use it for allocating memory and geting the handles to the objects, which can easily make the code somewhat more elegant ...
Example (MSDN Article by Derek Mitchell) :
http://msdn.microsoft.com/library/en-us/dnnetcomp/html/netcfphoneapi.asp
Have Fun ...