Since pdfTeX 1.30.0 the expandable command \pdffilesize is available. Because the output file of the previous run will gets overwritten, the size should be asked as early as possible:
\edef\jobsize{\pdffilesize{\jobname.pdf}}
\documentclass{article}
\begin{document}
The file size is \jobsize~(\the\numexpr(\jobsize+512)/1024\relax~KB).
\end{document}

However the printed file size will be part of the page. Thus the new output file will probably have a different file size. The file size depends on the included digits that are used in \jobname. If all digits are included anyway, then this does not matter. However
the page stream changes that is usually compressed. Therefore it is quite possible that the file size will never match the actual file size regardless the number of reruns.
Therefore rounding is a good idea.
Further remarks:
LuaTeX can also be supported:
\RequirePackage{pdftexcmds}
\makeatletter
\edef\jobsize{\pdf@filesize{\jobname.pdf}}
\makeatother
If the file does not exist yet, then \pdffilesize or \pdf@filesize expands to the empty string, example:
\ifx\jobsize\empty
\textbf{??}%
\else
\jobsize
\fi
The size can also put in a reference to get warned by LaTeX because of changed references. But this might not be the best idea, because the size might never stabilize, see above.
Update
Some tricks allow the stabilizing of the file size:
Include all digits (\pdfincludechars), even if some are not used. Then the font size remains the same.
Use of a "form xobject" (a PDF terminus for reused material, similar to save boxes in (La)TeX. Then the page streams remain constant. Only the stream of the xobject varies.
The randomized effect of compression can be eliminated by turning the compression off for this object.
It remains the xobject stream that varies with the file size. But the file size is stabilized so far that adding the file size in a reference in the .aux file can be tried to get rerun warnings.
The following example also uses siunitx for formatting the file size and puts
the file size at a fixed location in the page as requested in the question.
Package atbegshi is used for that purpose.
\RequirePackage{pdftexcmds}% support LuaTeX
\makeatletter
\edef\jobsize{\pdf@filesize{\jobname.pdf}}
\makeatother
\documentclass{article}
\usepackage{siunitx}
\DeclareBinaryPrefix{\kibi}{Ki}{10}
\DeclareBinaryPrefix{\mebi}{Mi}{20}
\DeclareBinaryPrefix{\gibi}{Gi}{30}
\DeclareSIUnit\byte{B}
\makeatletter
\newcommand*{\printjobsize}{%
\@ifundefined{xform@jobsize}{%
\begingroup
\sbox0{%
\sisetup{detect-mode=false,mode=text}%
\pdfincludechars\font{0123456789 ()}%
\pdfincludechars\font{\si{\kibi\byte}\si{\mebi\byte}\si{\gibi\byte}}%
\ifx\jobsize\@empty
\textbf{??}%
\else
\expandafter\num\expandafter{\jobsize}~bytes (%
\ifnum\numexpr(\jobsize+512)/1024\relax<10 %
\else
\ifnum\numexpr(\jobsize+524288)/1048576\relax<10 %
\expandafter\SI\expandafter{\the\numexpr(\jobsize+512)/1024\relax
\else
\ifnum\numexpr(\jobsize+536870912)/1073741824\relax<10 %
\expandafter\SI\expandafter{\the\numexpr(\jobsize+524288)/10485
\else
\expandafter\SI\expandafter{\the\numexpr(\jobsize+536870912)/10
\fi
\fi
)%
\fi
\fi
}%
\pdfcompresslevel=0\relax
\immediate\pdfxform0\relax
\xdef\xform@jobsize{\the\pdflastxform}%
\endgroup
}{}%
\pdfrefxform\xform@jobsize\relax
}
% Adding the file size as reference of the new reference class "jobsize"
% in the ".aux" file.
\newcommand*{\newjobsize}{\@newl@bel{jobsize}{jobsize}}
\AtBeginDocument{%
\if@filesw
\immediate\write\@mainaux{\string\providecommand\string\newjobsize[1]{}}%
\immediate\write\@mainaux{\string\newjobsize{\jobsize}}%
\fi
}
\makeatother
% Put the file size 10mm from the left margin and 10mm from the bottom
\usepackage{atbegshi}
\usepackage{picture}
\AtBeginShipout{%
\AtBeginShipoutUpperLeft{%
\put(10mm,\dimexpr-\paperheight+10mm\relax){%
\makebox(0,0)[lb]{File size: \printjobsize}%
}%
}%
}
\usepackage{lipsum}
\begin{document}
\tableofcontents
\section{Hello World}
\lipsum[1-10]
\end{document}

gdefin theauxfile? Or do you want a complete LaTeX solution? – Juri Robl Aug 28 '12 at 9:04