Intellisense is currently very aggressive. I find that whenever I press the period key or tab key, Intellisense assumes I want it to complete what I'm typing, which is often not the case.
For example, in a new class open a for loop with a single char local variable.
for (Account a : new List<Account>()) { }
When I try to do something with the var by typing "a" followed period.
Auto-complete expands "a" to "Account" where "a" was perfectly valid.
for (Account a : new List<Account>()) { Account. }
I've found that after the class successfully compiles, Intellisense becomes aware of the local vars and puts the local var at the top of the list of options. That doesn't help when you're writing fresh code, which can be a battle between you and the machine.
For this reason, I think the default action should be to not auto-complete what the user is typing, and only auto-complete if the users presses the down key and selects one of the options. I think that will be easier than trying to make Intellisense work on uncompiled variables.