1/2 Yes and 1/2 No. A complete 100% workalike will be a fairly hard conversion as the assumptions of VB6 is built on COM. The assumptions of COM are not the same as .NET. Where you really run into problem will be emulating the VB6 IDE.
Far easier is to write a compiler that is text compatible with Vb6. The esstential trick to remember that you can write assemblies that can adapt specific VB6 features to .NET. For example a printer object, vb6 graphics object. File Access etc, etc. There is also the issue of the wonky Form format, and you will need a converter for the FRX file. You will still have behavior issues but in theory you can minimize this in the VB6 support libraries.
Nothing prevented Microsoft from doing this. It was the arrogance of the original .NET team that lead down the path where they had to "fix" VB6. Yes as a language VB.NET has many cool features over VB6. But then VB6 had many cool features over QuickBASIC. But with VB6 I can take QuickBASIC code and dump it into VB6 and have a reasonable chance of getting it working. Especially for modules with nothing but business logic. It is not the same going from VB6 to VB.NET. Most of the problems are caused by the change in integer from 16 bit to 32 bit.
The lose of even minimal backwards compatibility was and still remains a problem. As Ruby, Python and other languages were ported over to .NET the arbitrary nature of the choices the original VB.NET team was exposed.
The best solution at this point is probably a minimal approach. Now that we had several years experience with VB.NET the most problematical areas are well known.
Some off the top of my head
1) Introduce a OPTION INT BASE statement. By default integers will be 32-bit and longs be 64-bit. However if you use OPTION INT BASE 16. Then Integer will compile to a Int16 and Longs will Compile to a Int32. This will require also some modifications to Intellisense. So when it queries the meta the correct type for the base is reported in the tip. Understand that in the metadata everything is Int16s and Int32s.
2) Have robust printer, screen, and vb6 graphics helper assemblies. Microsoft has a 3/4 implementation of the Printer Object. The Vb6 Graphis object is buried in there and can be extracted with .NET reflector and used separately. But there is a lot of fit and finish work that needs to be done.
3) Have an option use the original VB6 Keywords use those helper assemblies.. The compiler will translate them into calls to the helper assembly.
There are other concerns in database access and other different areas. Much of this can be addressed by expanding the option and keywords that VB.NET.
Of course now there is a major divide in Microsoft Basic community. Expect a lot of static and complaints if these options are added. Probably if I was VB.NET manager I would fork the VB.NET compiler into a VB6.NET compiler to minimize this. It would depend on if these option would impact the current version of VB.NET.
You can read more on the issues involved here.