Policy-based routing works great for this. I recently did this to slowly cut over a hospital to a new internet edge one internal subnet at a time in exactly this way.
ip access-list extended PBR_SUBNETS
permit ip 172.16.1.0 0.0.0.255 any
!
route-map POLICY_ROUTE permit 10
match ip address PBR_SUBNETS
set ip next-hop 192.168.1.2
The above will redirect all packets from 172.16.1.0/24 to the IP address specified in the route-map. Change both as needed to fit your situation.
Apply this policy to the router interface that's facing your internal subnets.
interface GigabitEthernet0/1
ip policy route-map POLICY_ROUTE
This route-map will set the next hop for all permitted traffic, regardless of the routing table. (Use of the "default" keyword can get around this but doesn't sound like you need to) This means that your static route is probably not needed for this purpose, but you can leave it in there as a fallback in case BGP fails.
FYI - the way I did this was to enter the entire configuration, live, during the day, but with no entries in the access list. Since nothing matches, obviously, all traffic behaves normally, following the routing table. This provides for a very easy, testable, reversible framework for switching internal subnets over, since all it takes from this point is just to add them to the ACL.