17:52
Let F be the set of finite subsets of the theory S. Let X[T] be the set of all elements of F that contain (⊇) T. Let D be { Y : Y ⊆ F and Y ⊇ X[T] for some T in F }. Then D is a filter on F. (Closure under superset is trivial. Closure under intersection holds since X[T1]⋂X[T2] ⊆ X[T1⋂T2].) Let U be an ultrafilter on F extending D. Let M[T] be a model of T for each T in F (using AC). Let M* be the ultraproduct of M[T] over U. Then M* satisfies every T in F since X[T] is in U.
But it is much simpler if S is countable. You just enumerate S as Q[1..], and let M[k] be a model of Q[1..k], and let U be an ultrafilter on N extending the Frechet filter (all cofinite subsets of N), and let M* be the ultraproduct of M[k] over U. Then every Q[k] is satisfied by M[k..] and hence also by M*.
But in my opinion it's silly to use ultraproducts when all you actually need is a well-ordering of S. The ultraproduct needs a well-ordering of P(F), which is much more 'unreal' especially when S is countable.
@LeakyNun: Got to go. See you!