Can you use へ and に interchangeably, as in:
Are there any subtle differences in the use of these two?
The confusion comes from the fact that in English we often translate these simply as "to"; they do, however, emphasize different spatial aspects of an action:
東京に行った → "I went to Tokyo."
"東京へ" → "to/towards Tokyo," probably with other stops on the way. You can also use it interchangeably with に in the previous example sentence, but now with an emphasis on the direction.
東京（の方）へ行った → "I went to/towards Tokyo."
東京まで行った → "I went to Tokyo (and that's where my journey ended)."
If you want to think of it geometrically, に specifies a point (the destination), へ specifies the direction of an arrow, and まで refers to a line segment between the start and end points.
There is a very subtle difference between the two--with に, the destination is more important; with へ, the journey is more important. You might use に if you want to say you're going "to the store" and へ if you want to say you're going "in the direction of the store [and ending up there]."
Is there a lot of practical difference in how they are used? Not really.
On a pedantic note, there is an old saying the goes like
京へ、筑紫に、坂東さ (ca 1609)
京に、つくしへ、坂東さ (ca 1496)
which shows how each dialect used different particle to say 北海道○行く around that time. 京 is for Kyoto, 筑紫(つくし) is Kyushu and 坂東 is Kanto/Tohoku.
Being just a layperson on Japanese linguistics, I'll just stop here, but I'm sure a more learned person will have a lot to say about why the place of に and へ are different between the two quotes above, and how these regional differences came about.
Those 2 threads asking the same question should be merged and maybe become wiki to be edited easily (particles questions are recurrent)
To sum up and try to correct some of the answers already given:
-へ is the direction particle. You could say it focuses on the journey
-に is the destination particle. It focuses on the destination.
-まで Is a final destination particle as well but implies that you're coming from somewhere (から) and thus that there's some distance between the 2 points.
-のほう（の方） means in the direction of. It could be used in a case where you are giving direction to someone:
(walk 300m towards the post office and you will see the middle school on your right)
へ is the direction に is the purpose
When I say デパートへ行きます, I am just heading towards the department store. When I say デパートに行きます, I am going to the department store with a purpose. The department store is the location where I will complete my purpose.
It is the same as saying 買い物に行きます or 仕事に行きます Shopping and work are not physical places but merely activities or purposes in this sentence. に cannot be replaced by へ in that case.
But when we are speaking about a location, we could either used へ or に as we usually go to a place with a purpose. Japanese people tend to never use へ in a conversation but rather に