Is it possible to restrict where coins from a given P2SH address can be sent to? I would like to create a checking/saving style scheme where coins from savings can only go into checking before they go anywhere else.

Is this even possible in Bitcoin?
No, Bitcoin script has no view of the output of a transaction as a design decision. This sort of behavior is called a covenant, which is usually regarded to be a fairly poor idea.