You are a victim of circuses.
The fact that you "don't have to specify in=135" is a coincidence. And the conclusion that in the second case TikZ is "us[ing] the previous one" is false. The observed behaviour is all due to two little lines in the file tikzlibrarytopaths.code.tex which read:
\def\tikz@to@out{45}
\def\tikz@to@in{135}
These mean that if you don't specify an out then it is automatically set to 45, similarly if you don't specify an in it is automatically set to 135. (These only have effect if something selects the curve variant of the to path rather than the default. Specifying one of in or out is sufficient.)
There is a relative option which sets the angles relative to a line between the start and ending coordinates. So if you use relative,in=180 (as the line is oriented from the source to the target) then the correct angle is chosen for the in line. However, this makes the out angle also relative, which isn't what you seem to want.
So here's a little code I wrote that sets the in and out automatically if you don't set them yourself. The key, auto ends, has to be given before any overriding out or in because it can't tell the difference between the user saying out=45 and the default value. However, this does not seem much of a hardship.
What it does is to set both in and out to be empty at call time. Then when the path is processed, any that are still empty are set to the angle between the start and end coordinates.
\documentclass{article}
%\url{http://tex.stackexchange.com/q/39903/86}
\usepackage{tikz}
\makeatletter
\tikzset{
auto ends/.code={%
\def\tikz@to@switch@on{\let\tikz@to@path=\tikz@to@curve@path@rel}%
\tikz@to@switch@on
\let\tikz@to@in=\pgfutil@empty
\let\tikz@to@out=\pgfutil@empty
}
}
\def\tikz@to@curve@path@rel{%
[every curve to]
\pgfextra{%
\ifx\tikz@to@out\pgfutil@empty
\let\relin@toto=\tikztotarget
\ifx\tikz@to@in\pgfutil@empty
\else
\tikz@to@modify\relin@toto\tikz@to@in
\fi
\tikz@scan@one@point\pgfutil@firstofone(\relin@toto)\relax
\pgf@xa=\pgf@x
\pgf@ya=\pgf@y
\tikz@scan@one@point\pgfutil@firstofone(\tikztostart)\relax
\advance\pgf@xa by -\pgf@x
\advance\pgf@ya by -\pgf@y
\pgfmathtruncatemacro\tikz@to@out{int(atan2(\pgf@xa,\pgf@ya))}%
\fi
\ifx\tikz@to@in\pgfutil@empty
\let\relin@tofrom=\tikztostart
\ifx\tikz@to@out\pgfutil@empty
\else
\tikz@to@modify\relin@tofrom\tikz@to@out
\fi
\tikz@scan@one@point\pgfutil@firstofone(\relin@tofrom)\relax
\pgf@xa=\pgf@x
\pgf@ya=\pgf@y
\tikz@scan@one@point\pgfutil@firstofone(\tikztotarget)\relax
\advance\pgf@xa by -\pgf@x
\advance\pgf@ya by -\pgf@y
\pgfmathtruncatemacro\tikz@to@in{int(atan2(\pgf@xa,\pgf@ya))}%
\fi
\iftikz@to@relative
\tikz@to@compute@relative
\else
\tikz@to@compute
\fi
}
\tikz@computed@path \tikztonodes
}
\makeatother
\begin{document}
\begin{tikzpicture}
\node [circle, draw=black] (F) at (1,1) {$F$};
\draw (0,2) to [auto ends,out=-90] (F);
\draw (2,2) to [auto ends,out=-90] (F);
\draw (2,-2) to [auto ends,out=90] (F);
\draw (-2,-2) to [auto ends] (F);
\end{tikzpicture}
\end{document}
Here's the result:

Marc van Dongen and I have slightly different interpretations of the request. Here's an adaptation of the above code that allows for syntax of the form:
\draw[every to/.style={auto ends}] (0,2) to [out=-90] (F) to[intermediate,in=-90] (2,2);
The reason for the needed code is that if one writes something like:
\draw (0,0) to[out=90,in=45] (F) to[out=90,in=45] (0,2);
then the result is not the same as writing
\draw (0,0) to[out=90,in=45] (F) (F) to[out=90,in=45] (0,2);
Witness:

The point is that a to path constructs a new piece of a path which is appended to the current path. So in the above, the construction results in something like .. controls (some point) and (some other point) .. (the target). Now (the target) might well have been modified from what was originally specified on the path. But the source was not mentioned in the additional part (this makes sense for concatenating paths segments). So the result of two successive to paths is something like:
.. controls (1st cntrl) and (2nd cntrl) .. (1st modified target) .. controls (3rd cntrl) and (4th cntrl) .. (2nd modified target);
In particular, the source for the second to path is not what was specified in the original \draw command but is what the first to path said it was. Most of the time this is exactly what is wanted. However, to do the original poster's path in one go, this isn't what is wanted. There, what is wanted is the second behaviour where the result would be:
.. controls (1st cntrl) and (2nd cntrl) .. (1st modified target) (1st original target) .. controls (3rd cntrl) and (4th cntrl) .. (2nd modified target);
To achieve this automatically, we need to reinsert the original target back in the stream. However, we can't do this automatically at the end of the first to path since we don't know that there is a second to path on its way. All we can do at the end of the first one is to save the original target just in case it is needed again. Then at the start of the second, we can reuse it (if we want) to restart the path again at the correct place.
Here's the modified code, with an example. As written, it is tied in to the auto ends key, but it could easily be extracted to a separate set of keys. The difficulty is that the standard to paths would need patching to to insert the correct move to.
\documentclass{standalone}
%\url{http://tex.stackexchange.com/q/39903/86}
\usepackage{tikz}
\makeatletter
\tikzset{
auto ends/.code={%
\def\tikz@to@switch@on{\let\tikz@to@path=\tikz@to@curve@path@rel}%
\tikz@to@switch@on
\let\tikz@to@in=\pgfutil@empty
\let\tikz@to@out=\pgfutil@empty
\let\relin@start=\pgfutil@empty
},
intermediate/.code={
\let\relin@start=\relin@target
},
}
\newif\ifrelin@restartnext
\newif\ifrelin@restart
\def\tikz@to@curve@path@rel{%
[every curve to]
\pgfextra{%
\global\let\relin@target=\tikztotarget
\ifx\relin@start\pgfutil@empty
\else
\let\tikztostart=\relin@start
\fi
\ifx\tikz@to@out\pgfutil@empty
\let\relin@toto=\tikztotarget
\ifx\tikz@to@in\pgfutil@empty
\else
\tikz@to@modify\relin@toto\tikz@to@in
\fi
\tikz@scan@one@point\pgfutil@firstofone(\relin@toto)\relax
\pgf@xa=\pgf@x
\pgf@ya=\pgf@y
\tikz@scan@one@point\pgfutil@firstofone(\tikztostart)\relax
\advance\pgf@xa by -\pgf@x
\advance\pgf@ya by -\pgf@y
\pgfmathtruncatemacro\tikz@to@out{int(atan2(\pgf@xa,\pgf@ya))}%
\fi
\ifx\tikz@to@in\pgfutil@empty
\let\relin@tofrom=\tikztostart
\ifx\tikz@to@out\pgfutil@empty
\else
\tikz@to@modify\relin@tofrom\tikz@to@out
\fi
\tikz@scan@one@point\pgfutil@firstofone(\relin@tofrom)\relax
\pgf@xa=\pgf@x
\pgf@ya=\pgf@y
\tikz@scan@one@point\pgfutil@firstofone(\tikztotarget)\relax
\advance\pgf@xa by -\pgf@x
\advance\pgf@ya by -\pgf@y
\pgfmathtruncatemacro\tikz@to@in{int(atan2(\pgf@xa,\pgf@ya))}%
\fi
\iftikz@to@relative
\tikz@to@compute@relative
\else
\tikz@to@compute
\fi
\ifx\relin@start\pgfutil@empty
\else
\let\relin@computed@path=\tikz@computed@path
\edef\tikz@computed@path{(\relin@start)\tikz@computed@path}
\fi
}
\tikz@computed@path \tikztonodes
}
\makeatother
\begin{document}
\begin{tikzpicture}
\node [circle, draw=black] (F) at (1,1) {$F$};
\draw[every to/.style={auto ends}] (0,2) to[out=-90] (F) to[intermediate,in=-90] (2,2);
\end{tikzpicture}
\end{document}
Result:
