You don't say which version of Access. Access 2000 ADPs are chock-full of bugs. You could try doing a Me.Refresh after applying the filter to see if that recalcs the the Sum in the subform. Or, you could get down and dirty and do Me.subformname.Requery to force it to refetch the data.
By the way, is your subform based on a View, Function, or Stored Procedure? If it's a View, then applying a filter by setting the Filter and FilterOn properties (Access 2002 or 2003) should send the filter to the server for execution (Access sets and sends the SeverFilter property). In Access 2000, you must explicitly set the ServerFilter property. If the form is based on a Function or SP, Access must still fetch the output of the SP or Function to the local machine and then apply the filter - not very efficient. You'd be better off using parameters and setting the Input Parameters property.
John Viescas, author
"Microsoft Office Access 2003 Inside Out"
"Running Microsoft Access 2000"
"SQL Queries for Mere Mortals"