A presheaf F$F$ with values in C$C$ is a called a sheaf if, for every object X$X$ and every covering sieve R$R$ of X$X$, the natural maps
$F(X) \rightarrow F(Y)$
for each Y in R induce an isomorphism
$F(X) \xrightarrow{\sim} \varprojlim_{Y \in R} F(Y)$
This definition makes sense without any assumptions on C$C$.
The sheafification construction makes use of filtered colimits and essentially arbitrary limits (if you are interested in sheaves on a particular topology then you might be able to restrict the class of limits that need to be considered). It is defined by iterating the construction
F^+(X) = \varinjlim\sb {R} \varprojlim\sb {Y \in R} F(Y) http://latex.mathoverflow.net/png?F%5E%2B%28X%29%20%3D%20%5Cvarinjlim%5F%7BR%7D%20%5Cvarprojlim%5F%7BY%20%5Cin%20R%7D%20F%28Y%29$F^+(X) = \varinjlim_{R} \varprojlim_{Y \in R} F(Y)$
where the $\varinjlim$ is taken over covering sieves of X$X$. If F$F$ is set-valued, the associated sheaf of F$F$ is $F^{++}$.
I don't know what conditions on C$C$ are necessary to make the sheafification of a presheaf in C$C$ a sheaf, but I wouldn't expect the construction to behave very well unless C$C$ is a fairly special category.
(Categories of algebraic structures on sets defined by finite inverse limits would qualify as "special", essentially because filtered colimits commute with finite inverse limits.)