Performance of summing one value from join of three tables
Avoid LEFT JOIN clauses

I'm not sure that I'd pick the OR as the problem.  The real problem is more likely to be the LEFT JOIN clauses.  A LEFT JOIN is a slow operation and to be avoided if you aren't looking for NULL values.  

Try using two subselects instead:

SELECT tblU.Name AS Name, tblU.UserID AS ID,
  (SELECT SUM(IF(Action=1, 1, -1))
   FROM Kudos AS tblK
     INNER JOIN Discussions AS tblD ON tblK.DiscussionID = tblD.DiscussionID
   WHERE tblD.InsertUserID = tblU.UserID) +
  (SELECT SUM(IF(Action=1, 1, -1))
   FROM Kudos AS tblK
     INNER JOIN Comments AS tblC ON tblC.CommentID = tblK.CommentID 
   WHERE tblC.InsertUserID = tblU.UserID ) AS rep
FROM Users AS tblU;


Note that this only works if Kudos never has a non-null CommentID in a row with a non-null DiscussionID.  This also has the side effect of getting rid of the OR, but I'm not sure that's what matters.  

Use indexes

Another thing that you can do is add indexes on the relevant columns if you don't already have them.  Hopefully you already have PRIMARY KEY indexes on the ID column for each table.  If that's not enough, it is possible to add indexes on things like UserID, Name and DiscussionID, InsertUserID, Action.  These can move critical columns into memory.  

Consider merging Comments and Discussions

The Comments and Discussions tables use the same columns here.  Consider putting both in the same table with a type column.  Then Kudos would have to do only one join.  

You don't include the various table definitions.  If there's too much stuff in Comments and Discussions for a simple merge, you could also consider refactoring them into three tables.  The ID column and author could be set in one table while the other two tables could hold the comment and discussion specific content respectively.  I would consider a merge to be a better solution than this if possible.  This is a backup suggestion.