## Emacs 24.3 or below ##

There's no built-in way of preventing these old files from being loaded, but
there are easy ways to get rid of them.

* You can recompile the entire elpa directory by calling:  
  `M-x byte-recompile-directory RET ~/.emacs.d/elpa/`.  
  This should get rid of outdated files.
* You can use the
  [auto-compile](https://github.com/tarsius/auto-compile) package and
  activate `auto-compile-on-load-mode` which can compile files before
  they are loaded.

## Emacs 24.4 ##

Yes, and it turns out to be rather simple. The `load-prefer-newer`
variable serves precisely this purpose.

    (setq load-prefer-newer t)

Unfortunately, it won't work when some code specifically targets the
`.elc` file, such as `(load "server.elc")`. But it should be enough as
long as you're using `require`s or calling `load` without a suffix, which you should.

From the doc:

> load-prefer-newer is a variable defined in lread.c.  
> Its value is nil  
>   
> Documentation:  
> Non-nil means load prefers the newest version of a file.  
> This applies when a filename suffix is not explicitly specified and
> load is trying various possible suffixes (see load-suffixes and
> load-file-rep-suffixes).  Normally, it stops at the first file
> that exists unless you explicitly specify one or the other.  If this
> option is non-nil, it checks all suffixes and uses whichever file is
> newest.  
> Note that if you customize this, obviously it will not affect files
> that are loaded before your customizations are read!