Engine degreaser. It takes EVERYTHING off so make sure if you use it to clean/wipe and dry the chain from any left over degreaser. Then lubricate the hell out of it. Don't forget to make sure the chain is warm while doing this.
Use your chain cleaner (the type that rinses off with cold water). Apply, scrub, rinse. Reapply if any remains. Mine comes out looking brand new every time. Relube your chain as it will get washed of its external lube as well.
Top tip: After you get it clean, frequent cleaning will prevent it from looking like .... and there won't be a lot to clean since you do it frequently. I try to grab a rag and wipe down the sprocket/hub area after each ride.
Motul chain clean is awesome stuff. Removes grease and graim easily. It also works great if you want to clean the areas around the chain w/out leaving a greasy film like the swingarm, kickstand, lower block etc.