To give you a correctly answer, I need to add a code to put together all the next parts .
The trick here: we place a node on the path with option sloped
so we a get a tangent. To show this tangent line, we place the node with anchor=south west
. The corner of the bow is now correctly placed,and finally we give correct size to the node.
All the parts together:

\documentclass[]{scrartcl}
\usepackage{tikz}
\usetikzlibrary{arrows}
\begin{document}
\begin{tikzpicture}[allow upside down]
\draw[red,line width=1pt] (0,0) .. controls ++(1,6) and ++(-1,2) .. (10,4)
node[sloped,inner sep=0cm,above,pos=.5,
anchor=south west,
minimum height=(10.5)*0.3cm,minimum width=(10.5)*.3cm](N){};
\path (N.south west)%
edge[-stealth',blue] node[left] {$\vec{ n}$} (N.north west)
edge[-stealth',blue] node[above] {$\vec{ t}$} (N.south east);
\draw[-stealth',gray] (N.south west) --%
node[below] {$\vec{t_a}$} (N.south west -| N.south east);
\draw[-stealth',gray] (N.south west) --%
node[right] {$\vec{t_o}$} (N.south west |- N.south east);
\end{tikzpicture}
\end{document}
Complement about tangents and normals
\documentclass[11pt]{scrartcl}
\usepackage{tikz}
\usetikzlibrary{arrows}
\begin{document}
\begin{tikzpicture}[allow upside down]
\draw[red,line width=1pt] (0,0)
.. controls +(right:6cm) and +(left:4cm) .. (2,6)
\foreach \p in {0,5,...,100} {
node[sloped,inner sep=0cm,above,pos=\p*0.01,
anchor=south west,
minimum height=(10+\p)*0.03cm,minimum width=(10+\p)*0.03cm]
(N \p){}
}
.. controls +(right:2cm) and +(right:3cm) .. (6,2)
\foreach \p in {5,10,...,100} {
node[sloped,inner sep=0cm,above,pos=\p*0.01,
anchor=south west,
minimum height=(110-\p)*0.03cm,minimum width=(110-\p)*0.03cm]
(N2 \p){}
}
;
\foreach \p in {0,5,...,100} {
\draw[-latex,blue] (N \p.south west) -- (N \p.north west);
\draw[-latex,color=green!50!black] (N \p.south west) -- (N \p.south east);
}
\foreach \p in {5,10,...,100} {
\draw[-latex,blue] (N2 \p.south west) -- (N2 \p.north west);
\draw[-latex,color=green!50!black] (N2 \p.south west) -- (N2 \p.south east);
}
\end{tikzpicture}
\vspace{2cm}
\begin{tikzpicture}[>=latex']
\coordinate (A) at (1,1);
\coordinate (B) at (3,4);
\draw
[->]
(A) -- node [above] {\(\vec v\)}(B)
;
\draw[red,->] (A)-- node [above] {\(\vec a\)}(A|-B) ;
\draw[red,->] (A|-B)--node [left] {\(\vec b\)}(B) ;
\end{tikzpicture}
\end{document}

Next a code to show how to draw component vector (it's possible to create a macro to do this.
Instead of \draw [->](A) -- (B) node [above,midway] {\(\vec v\)};
you can write \draw [->](A) -- node [above] {\(\vec v\)}(B);
.
With pgf 2.1 CVS now it's possible to use a new option edge label
or edge node
to place
directly the label (see the last picture)
\documentclass[11pt]{scrartcl}
\usepackage{tikz}
\usetikzlibrary{arrows}
\begin{document}
\begin{tikzpicture}[>=latex']
\coordinate (A) at (1,1);
\coordinate (B) at (3,4);
\draw [->](A) -- node [above] {\(\vec v\)}(B);
\path (A)--(A|-B) coordinate (C) ;
\draw[red,->] (A) -- node[left] {\(\vec a\)} (C) ;
\draw[red,->] (C)-- node[above] {\(\vec b\)}(B) ;
\end{tikzpicture}
\end{document}

Only with PGF 2.10 CVS
