It is possible to spoof IP addresses. The issue is always the underlying protocol. For TCP/IP, you're almost out of luck unless you don't proceed with a full handshake. For UDP however, if you don't care about a response and aren't trying to build fault tolerance, you can use it.
There are several ways routers can stop IP address spoofing. The main ways for Cisco routers are:
Involve any solution that attempts to minimize asymmetric
routing, e.g. Spanning tree protocol STP. Naturally a
spoofed UDP packet won't have a symmetric route. The only problem is
that the directed graph issue would entail a subset of nodes in the
routing to support STP. Also, UDP may not be affected.
RFC 1812 addresses your concern. Note the fact that there are a lot of asymmetric routes on the internet, so it becomes a harder task.
The above RFC was referenced here:
"We considered suggesting routers also validate the source IP address
of the sender as suggested in 8, but that methodology will not
operate well in the real networks out there today. The method
suggested is to look up source addresses to see that the return path
to that address would flow out the same interface as the packet
arrived upon. With the number of asymmetric routes in the Internet,
this would clearly be problematic."