OK, you got already 4 answers, but to give still more options to other people looking up the question:
As you already are useing the lastpage package, you can also use \lastpage@lastpage (at least with the recent version 1.2k):
\documentclass[oneside]{book}
\usepackage{fancyhdr,lastpage}
\pagestyle{fancy}
\makeatletter
\def\lastpage@lastpage{1000}% because \lastpage@lastpage is undefined before
% the .aux file has been loaded at the begin of the document
% (and during the first compilation run).
\lhead{\rule{\dimexpr \textwidth*\thepage/\lastpage@lastpage \relax}{2mm}}%
\makeatother
\usepackage{lipsum}
\begin{document}
\lipsum[1-60] % inserts dummy text for demonstration.
\end{document}
BUT when another pagenumbering scheme (e.g. Roman) is used, or the pagenumbers are reset, this will not work, e.g. \lastpage@lastpage could be X (Roman for 10), and pages put out with \AtEndDocument might not be counted (depending on loading order of the packages). In those cases the pageslts package (v1.2a) could be used:
\documentclass[oneside]{book}
\usepackage{fancyhdr,pageslts}
\setcounter{pagesLTS.pagenr}{1000}
% because pagesLTS.pagenr is zero before
% the .aux file has been loaded at the begin of the document
% (and during the first compilation run).
\pagestyle{fancy}
\lhead{\rule{\dimexpr \textwidth*\theCurrentPage/\the\value{pagesLTS.pagenr}\relax}{2mm}}%
\usepackage{lipsum}
\begin{document}
\pagenumbering{arabic}
\lipsum[1-30] % inserts dummy text for demonstration.
\clearpage
\pagenumbering{Roman}
\lipsum[31-60] % inserts dummy text for demonstration.
\end{document}
(I also replace the fixed 120mm by \textwidth.)