You could use the following condition within your figures:
\documentclass{article}
\usepackage[showframe]{geometry}% http://ctan.org/pkg/geometry
\usepackage{graphicx}% http://ctan.org/pkg/graphicx
\usepackage{xifthen}% http://ctan.org/pkg/xifthen
\begin{document}
\begin{figure}
\setbox0=\hbox{\includegraphics{tiger}}% Store image in box0
\ifthenelse{\dimtest{\wd0}>{\linewidth}}%
{\includegraphics[width=\linewidth]{tiger}}% Scale image to fit within \linewidth
{\usebox0}% Use original (unaltered in width) image
\caption{This is a tiger, rawr.}
\end{figure}
\end{document}

The geometry package was added merely to highlight the page dimension via the showframe package option. The actual image width of tiger is 550.68999pt > 430.004462pt = \linewidth.
You could also combine the above code in a macro. For example, consider the macro \maxwidth[<max hlen>]{<stuff>}:
\newcommand{\maxwidth}[2][\linewidth]{% \maxwidth[<max hlen>]{<stuff>}
\setbox0=\hbox{#2}% Store image in box0
\ifthenelse{\dimtest{\wd0}>{#1}}%
{\resizebox{#1}{!}{#2}}% Scale object to fit within \linewidth
{\usebox0}% Use original (unaltered in width) object
}
The first (optional) argument <max hlen> specifies the maximum horizontal length of the object <stuff> (the second, mandatory, argument). The default, if no <max hlen> is specified, is \linewidth. You would use it in the following way:
\maxwidth{\includegraphics{tiger}}
This would yield the same output as above