Having done something similar a few years ago I can tell you that this is not a nice task!
Much will depend on which version of SQL-Server you are using - the tools have been getting better. Another key point is whether or not the data is shared - in other words if the same rows can be updated at any of the locations then the task is far more complicated.
However here are some starting points ...
is a key phrase for your research - Microsoft article can be found here
] and another here
If you are using SQL 2005 then this detailed how-to
] will be useful
SQL2008 upwards see this article
] which uses Sync and includes a code sample.
Depending on your budget and expertise, my advice would be go for a third-party out-of-the-box solution rather than trying to write/configure something yourself - here's an example product from Red-Gate