Well, you're speaking of a 'timeout', so I'm guessing that the query takes too long to execute and PHP gives up waiting for it to complete.
it should look somehting like this if you change the AB_Actual to a subquery:
SELECT Account.Acc_Reference,
Account.Acc_Description,
Acc_Template.AT_Description,
(SELECT Account_Balances.AB_Actual FROM Account_Balances WHERE Account.Acc_Id = Account_Balances.Acc_Id) AS AB_Actual,
Account_Balances.AB_Budget,
Account_Balances.AB_On_Order,
Journal_Item.JI_Amount
FROM Account
Acc_Template ON Account.AT_Id = Acc_Template.AT_Id INNER JOIN
Journal_Item ON Account.Acc_Id = Journal_Item.Acc_Id
WHERE (Account_Balances.FY_Id = '7') AND (Acc_Template.AT_Description IN ('Expenses', 'Capital works in progress', 'Assets'))