This is probably impossible without any plugins, as mentioned on the comments.
But you wouldn't have to start from the scratch if you want to implement such functionality using VimL, you could use the BufNameComplete plugin as a starting point (note that it uses the CompleteHelper : Generic functions to support custom insert mode completions plugin, which probably isn't necessary for your problem).
You could use a regex to identify any environment variables before the expansion and then apply
substitute(result, expanded_env_var, original_env_var, '') in order to restore the environment variables.
(actually this works if you want to check only for the first environment variable on the input; if you want to preserve all of them,you would need to build a dictionary with all the variables and the respective expansions, and then iterate on it to replace each expansion with the original variable)