LaTeX defines \hbar as \mathchar'26, followed by a backspace of 9 math units (\mkern-9mu), followed by the letter h. Or, more specifically,
\def\hbar{{\mathchar'26\mkern-9muh}% \hbar
In order to provide the flexibility to overlap these two elements (the bar and the letter), we break it into two separate components, focussing on moving the bar in the correct position and then merely typesetting the h afterwards. Moving the bar left/right is obtained by a straight-forward \hspace*. Raising/lowering the bar is performed by the macro \raisemath{<len>}{...}, obtained from How to raise a subscript?:
\makeatletter
\newcommand{\raisemath}[1]{\mathpalette{\raisem@th{#1}}}
\newcommand{\raisem@th}[3]{\raisebox{#1}{$#2#3$}}
\makeatother
Overlap of the bar with the h is obtained by \mathrlap (provided by the mathtools package). Easy macro definition is provided by \NewDocumentCommand from the xparse package.
\documentclass{article}
\usepackage{mathtools}% http://ctan.org/pkg/mathtools
\usepackage{xparse}% http://ctan.org/pkg/xparse
\makeatletter
\newcommand{\raisemath}[1]{\mathpalette{\raisem@th{#1}}}% \raisemath{<len>}{...}
\newcommand{\raisem@th}[3]{\raisebox{#1}{$#2#3$}}
\makeatother
\NewDocumentCommand{\newhbar}{O{0pt} O{0pt}}{% \newhbar[<horz len>][<vert len>]
\ensuremath{\mathrlap{\raisemath{#2}{\hspace*{#1}{\mathchar'26\mkern-9mu}}}h}%
}
\begin{document}
\[
\renewcommand{\arraystretch}{2}%
\begin{array}{rl}
\verb!\hbar!: & \hbar \\
\verb!\newhbar!: & \newhbar \\
\verb!\newhbar[4pt]!: & \newhbar[4pt] \\
\verb!\newhbar[-1pt][1.5pt]!: & \newhbar[-1pt][1.5pt] \\
\verb!\newhbar[2pt][-4pt]!: & \newhbar[2pt][-4pt] \\
\verb!\tfrac{\hbar}{2}!: & \tfrac{\hbar}{2} \\
\verb!\tfrac{\newhbar}{2}!: & \tfrac{\newhbar}{2} \\
\verb!\tfrac{\pi}{\newhbar[0pt][-1pt]}!: & \tfrac{\pi}{\newhbar[0pt][-1pt]}
\end{array}
\]
\end{document}

You can play around with the optional parameters for \newhbar[<horz len>][<vert len>]. The first parameter <horz len> moves the bar left/right, while the second <vert len> moves it up/down. They are optional, but cannot be empty. It would be possible to extend this to accommodate such empty parameters.
\hbarsmaller (e.g. in a\tfraccommand), the bar gets pushed upwards. I believe this is due to the fact that the phantomhdoesn't scale appropriately. Any way to fix this? – qgp07 Oct 03 '11 at 03:34