As has been mentioned in the comments, you can use the positioning library; here's a simple example illustrating the options available when using, for example, above left (the same diagram is repeated twice; the second time the on grid option is activated):
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\draw[help lines,step=5mm,gray!20] (0,0) grid (4,3);
\node (a) at (0,0) {a};
\node[above right] (b) {b};
\node[above right = of a] (c) {c};
\node[above right = 2cm of a] (d) {d};
\node[above right = 2cm and 3cm of a] (e) {e};
\begin{scope}[xshift=5cm,on grid]
\draw[help lines,step=5mm,gray!20] (0,0) grid (4,3);
\node (a) at (0,0) {a};
\node[above right] (b) {b};
\node[above right = of a] (c) {c};
\node[above right = 2cm of a] (d) {d};
\node[above right = 2cm and 3cm of a] (e) {e};
\end{scope}
\end{tikzpicture}
\end{document}

The parameter values 2cm and 3cm can be altered relative to the desired location e.g. -2cm and -3cm to mirror the location in the local coordinate system where a is the center point of.
\node[above right = 2cm and 3cm of a]
\node[above right = -2cm and -3cm of a]
Now a little example showing the node distance key and some options besides above left:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\draw[help lines,step=5mm,gray!20] (-4,-4) grid (4,3);
\node[draw] (a) at (0,0) {a};
\foreach \pos in {above,above right,right,below right,below,below left,left,above left}
\node[draw,\pos = of a] () {\pos};
\begin{scope}[yshift=8cm,node distance=2cm and 1cm]
\draw[help lines,step=5mm,gray!20] (-4,-4) grid (4,3);
\node[draw] (a) at (0,0) {a};
\foreach \pos in {above,above right,right,below right,below,below left,left,above left}
\node[draw,\pos = of a] () {\pos};
\end{scope}
\end{tikzpicture}
\end{document}

The pgfmanual explains some other options available through this library.
Referring now to the specific example on the original question, the following example shows the original code in which everything is done manually, and then the same diagram produced used the positioning library and some of the ideas mentioned above:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\node (a) at (0,0) {a};
\node (b) at (2,1) {b};
\draw (a) -- (0,1);
\draw (0,1) -- (b);
\begin{scope}[xshift=3cm,on grid]
\node (a) at (0,0) {a};
\node[above right= 1cm and 2cm of a] (b) {b};
\draw (a) |- (b);
\end{scope}
\end{tikzpicture}
\end{document}

positioningjust for this. See manual section 16.5.3 – percusse Aug 30 '12 at 12:48atkeyword and you have a typo in\noe). – Jake Aug 30 '12 at 12:50bbe 2cm to the right and 1cm above the center of nodea, or should their edges be that far apart (both is possible)? I would suggest to read the section percusse referred to, and then make your question more concrete if you get stuck. – Jake Aug 30 '12 at 13:00