Q:

What kind of indexes will help me in this MERGE query? 

I have a table like this:
Name | TimeA | TimeB | ValueA | ValueB

And, I am performing some MERGE operations as follows:
  CREATE TABLE #TEMP1...

  INSERT INTO #TEMP1
  SELECT Name, Value
  FROM dbo. AnotherTable
  WHERE ...

  MERGE INTO dbo. MyTable AS Target
    USING (SELECT Name, Value FROM #TEMP1) AS Source
    ON Target. Name = Source. Name
    AND Target. TimeA = @TimeA
  WHEN MATCHED THEN
    UPDATE SET ValueA = Value
  WHEN NOT MATCHED THEN
    INSERT (Name, TimeA, TimeB, ValueA)
    VALUES (Source. Name, @TimeA, @TimeB, Value)

The Query Execution Plan says the following:
MERGE -> Table Merge 3% -> Compute Scalar 0% -> 
Top 0% -> Compute Scalar 0% -> Compute Scalar 0% ->
Nested Loops (Left Outer Join) 0% <- Constant Scan 0%
              ^
              |
              |
              --- Compute Scalar 0% <- Table Spool (Kager Spool) 12% <- Table Scan 86%

The plan, however does not tell me that an index will improve the performance.  I'm thinking an unclustered index on (Name,TimeA) should improve performance.  Is there a better way to achieve performance for MERGE queries like this? 
EDIT 1: I should note the sizes of the tables.  On an average Source always contains 30-70 rows on an average and Target contains > 30 million rows. 

A:

I would consider 
WHEN MATCHED AND ValueA <> Value THEN

YOu may be updating records that do not need to be. 

A:

This is here for reference.  There are some relevant points that I used to improve my query:

Using the optimization suggested by @HLGEM.  It made total sense. 
Two relevant points from the MSDN article here

To improve the performance of the MERGE statement, we recommend the
following index guidelines:

Create an index on the join columns in the source table that is unique and covering. 
Create a unique clustered index on the join columns in the target table. 

Another point from the same MSDN article that suggested not to place constants in the query

To filter out rows from the source or target tables, use one of the
following methods.  Specify the search condition for row filtering in
the appropriate WHEN clause.  For example, WHEN NOT MATCHED AND
S.EmployeeName LIKE 'S%' THEN INSERT....

Therefore, the indexes I added were:
ALTER TABLE #TEMP1
ADD CONSTRAINT PK_TEMP1 PRIMARY KEY CLUSTERED
(ELEMENTINSTANCE, ifAlias)

CREATE CLUSTERED INDEX IX_MyTable
ON dbo. MyTable(Name)

And my final query was this:
MERGE INTO dbo. MyTable AS Target
  USING (SELECT Name, Value FROM #TEMP1) AS Source
  ON Target. Name = Source. Name
WHEN MATCHED AND ValueA <> Value AND Target. TimeA = @TimeA THEN
  UPDATE SET ValueA = Value
WHEN NOT MATCHED THEN
  INSERT (Name, TimeA, TimeB, ValueA)
  VALUES (Source. Name, @TimeA, @TimeB, Value)

This gives me the following execution plan:
MERGE -> Table Merge 3% -> Compute Scalar 0% -> 
Top 0% -> Compute Scalar 0% -> Compute Scalar 0% ->
Nested Loops (Left Outer Join) 0% <- Table Scan (#TEMP1) Source 12%
              ^
              |
              |
              --- Compute Scalar 0% <- Clustered Index Seek (dbo. MyTable) 12%

Thank you everyone for your help!  Hopefully this should maintain the performance for sometime.