Simulation is when you are replicating, by the means of software, the general behaviour of a system starting from a conceptual model.
Emulation is when you are replicating, in a different system, how the original system actually internally works considering each function and their relations.
In other words:
Simulation is based on a software implementation of a model where the internal functions of the original systems are not taken into consideration (for example a "flight simulator" does not have any "component" of an actual aircraft).
Emulation is a replica of the internal system functions on a different host (for example on a Mac OS X I can write a software emulator of a Windows OS where a Win program can run). Emulators can also be strictly hardware-based and is normally based on a partial or complete "reverse engineering" phase.