Expert programmers may be able to juggle these things for CPU-GPU interactions and dual-core set ups but I think the problems increase exponentially with core number. It may become too complex to optimize fully some problems beyond 4 cores or so but machines running software will have a better chance of being rigorous and avoiding software deadlocks and race conditions than humans.
Game platform programmers (at least the good ones) are already very adept at multicore programming. Likewise for hardcore embedded guys. The real win here is for the other 99% of the programming population.