The following works for the default document classes that support \chapter (report and book):

\documentclass{report}
\makeatletter
\let\old@makechapterhead\@makechapterhead
\renewcommand{\@makechapterhead}{%
\addtocontents{toc}{\protect\addvspace{1.0em \@plus\p@}}%
\old@makechapterhead%
}
\renewcommand*\l@chapter[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
\addvspace{1.0em \@plus\p@}%
\setlength\@tempdima{1.5em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode \bfseries
\advance\leftskip\@tempdima
\hskip -\leftskip
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
\penalty\@highpenalty
\endgroup
\fi}
\makeatother
\begin{document}
\tableofcontents
\chapter{A chapter}\section{A section}\section{A section}
\chapter{A chapter}
\chapter{A chapter}\section{A section}\section{A section}
\chapter{A chapter}\section{A section}\subsection{A subsection}\subsection{A subsection}
\chapter{A chapter}
\end{document}
The solution does two things. It...
- ...modifies
\l@chapter - the macro responsible for setting the chapter-related entry in the ToC - to use \addvspace instead of the "traditional" \vskip. This is just to ensure that there's no "doubling" of vertical spaces when adding more \vspace.
- ...uses
\@makechapterhead to insert a vertical space (again, using \addvspace) into the ToC so that there's a space after the ToC entry.
Using a similar approach to the solution provided in Add dots in table of contents for parts for LaTeX document, adding dots to the chapter-entries in the ToC is possible via
\renewcommand*\l@chapter[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
\addvspace{1.0em \@plus\p@}%
\setlength\@tempdima{1.5em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode \bfseries
\advance\leftskip\@tempdima
\hskip -\leftskip
#1\nobreak
\xleaders\hbox{$\m@th % Added \xleaders
\mkern \@dotsep mu\hbox{.}\mkern \@dotsep
mu$}\hfil\nobreak\hb@xt@\@pnumwidth{\hss #2}\par
\penalty\@highpenalty
\endgroup
\fi}

Instead of using \leaders, I've used \xleaders. The difference between these to leader types are discussed in Want to fill line with repeating string.