Does there exist a category in which there are no products or coproducts for reasons other than the category is too small?
In the definition of a product of objects $X_i$ in some category $\mathcal{C}$, there is no assumption that the new object exists. Instead, the definition says that if it exists, then it satisfies...
There are categories in which products do not exist: the category of finite groups, for example, since an infinite product is no longer in the category. In the category of abelian groups, there is no coproduct (EDIT: this is wrong as pointed out in the comments. The coproduct in the category of abelian groups is the direct sum, not the free product, as it is in the category of groups.) since the free product of abelian groups is not abelian.
In these examples (and others), the reason for non-existence is really that the category in question is just too small: the product exists in a larger ambient category (the category of groups works in both examples) but not in the smaller one. So my question is the following:
Does there exist a category in which there are no products or coproducts for reasons other than the category is too small?
Solution 1:
Up to irrelevant set-theoretic issues, every category $\mathbb{C}$ embeds as a full subcategory into:
complete and cocomplete cartesian closed category (in fact a Grothendieck topos); the embedding is given by the usual Yoneda functor $y \colon \mathbb{C} \rightarrow \mathbf{Set}^{\mathbb{C}^{op}}$; it preserves all existing limits (particularly all existing products), exponent and no non-trivial colimits,
complete and cocomplete co-cartesian closed category (in fact a co-topos); the embedding is given by the contravariant Yoneda functor on the opposite category $y^{op} \colon \mathbb{C} \rightarrow (\mathbf{Set}^{\mathbb{C}})^{op}$; it preserves all existing colimits (particularly all existing coproducts), co-exponents and no non-trivial limits,
complete and cocomplete category with the embedding preserving all existing limits and colimits (particularly all existing products and coproducts); the embedding is given by the Dedekind-MacNeille completion $\mathit{dm} \colon \mathbb{C} \rightarrow \mathit{DM}(\mathbb{C})$; see the excellent answer provided by Todd Trimble to my old question.
One may also show that we cannot have three at once: there is no universal embedding to a complete and cocomplete category with (co)exponents that preserves all existing limits, colimits and (co)exponents.
So, to directly address your question: as long as you take only limits and colimits (products and coproducts) into consideration, you may always enlarge your category in such a way that all limits and colimits will exist. However such enlargement generally will not preserve all important properties of your structures.
Perhaps, a better way to look at the issue is that in any category all products and coproducts "externally" exist, but sometimes we do not have enough objects to "internalize" them in the category: i.e. there is always a "product distributor" $\hom(\Delta(-), X_i)$ (where $\Delta$ is the diagonal functor), but there may not exist a "product object" that represents the distributor as an embedded functor $\hom(-, \prod_i X_i)$.
Solution 2:
For any small category $C$, the presheaf category of functors from $C^{\operatorname{op}}$ to $\operatorname{Set}$ has all limits and colimits (you can define them pointwise), and the Yoneda embedding is a faithful and full functor from $C$ to the category of presheaves.