Reference the field that you want to change by its Internal Name (or field id) and then change its Display Name. The field's Internal Name (or field id) is unique within the Site Collection but the its Display Name need not be. You can find out the Internal Name by its field properties or using SharePoint 2010 Manager.
If the field is a custom type then you may use its static name by calling the TryGetFieldByStaticName method. See this post for more details - SharePoint Internal name, Static name, Display name.
Also, reconsider the use of spaces in the field names which has its own issues - SharePoint 2010 Fields or Columns Naming Problem.
You also have to update the list itself (at the end of your code segment).
UPDATE: (revised above code segment - but not tested & may need some tweaking)
using (SPSite site = new SPSite("http://sp10dev/sites/demo"))
{
using (SPWeb web = site.OpenWeb())
{
SPList demoList = web.Lists.TryGetList("Test");
SPField deptField = demoList.Fields.GetFieldByInternalName("Department");
deptField.Title = "Last Department";
deptField.PushChangesToLists = true; // *** push to list
deptField.Update(true); // *** using Update(true) updates list & DB
demoList.Update(); // *** update list
}
}