The following is possible using titlesec's explicit option:

\documentclass{article}
\usepackage[explicit]{titlesec}% http://ctan.org/pkg/titlesec
\makeatletter
\titleformat{\subsection}[runin]{\large\bfseries}{}{0pt}{%
\setbox0=\hbox{\ignorespaces#1\unskip}%
\thesubsection\quad\ifdim\wd0>\z@\relax#1.\fi%
}
\makeatother
\begin{document}
\section{Title}
\subsection{Title} Blah
\subsection{} Blah
\end{document}
explicit allows you to use #1 to place the argument to \subsection. However, it also removes easy use of the *-variant from the mix. Not sure whether that's a requirement.
The above sets the \subsection title in box 0, tests for its width (in order to see whether it's empty or not, and sets the title with a period if its not empty. As such, ending the title with a period will, of course, result in a double period. Here \@addpunct would help.
Here's another alternative using etoolbox:
\documentclass{article}
\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\makeatletter
\patchcmd{\@sect}% <cmd>
{#8}% <search>
{\setbox0=\hbox{\ignorespaces#8\unskip}\usebox0\ifnum2=#2\ifdim\wd0>\z@.\fi\fi}% <replace>
{}{}% <success><failure>
\makeatother
\begin{document}
\section{Title}
\subsection{Title} Blah
\subsection{ } Blah
\end{document}
It follows the same approach as above, but directly fixes the ultimate sectioning call. The condition \ifnum#2=2 refers to the \subsection level (level 2). For all other sections, no punctuation is added.